day11-StringBuilder&Math&Arrays&包装类&日期时间类
Posted teayear
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day11-StringBuilder&Math&Arrays&包装类&日期时间类相关的知识,希望对你有一定的参考价值。
day11-JAVAOOP
课程目标
1. 【理解】StringBuilder 类
2. 【掌握*】StringBuilder的使用
3. 【理解】Math类的使用
4. 【理解】Arrays类的使用
5. 【掌握*】包装类的使用
6. 【理解】BigInteger类和BigDecimal类的使用
7. 【掌握】Date类的使用
8. 【掌握*】SimpleDateFormat类的使用
9. 【理解】Calendr类的使用
B友https://www.bilibili.com/video/BV1QG4y1J76q?p=39
StringBuilder
StringBuilder类概述
String类是不可变的字符类,指的是地址。String s=“hello”; s=s+“a”,s是常量池,再增加拼接一个字符串a,还需要再次分配空间。
StringBuilder是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是 StringBuilder对象中的内容是可变的,也可称之为字符串缓冲类。
StringBuilder类的构造方法
方法名 | 说明 |
---|---|
public StringBuilder() | 创建一个空白可变字符串对象,不含有任何内容 16 |
public StringBuilder(String str) | 根据字符串的内容,来创建可变字符串对象,容量=字符串长度+16 |
代码演示
public class StringBuilderDemo01
public static void main(String[] args)
StringBuilder sb = new StringBuilder();//16
System.out.println(sb);//应该一个对象的地址值,一个空?
System.out.println(sb.length());//0
System.out.println(sb.capacity());//16
System.out.println("-------------------------");
// StringBuffer(int capacity)
StringBuilder sb2 = new StringBuilder(4);//4
System.out.println(sb2);
System.out.println(sb2.length()); //0 有容量不一定有内容
System.out.println(sb2.capacity());
System.out.println("-------------------------");
// StringBuffer(String str)
StringBuilder sb3 = new StringBuilder("hello");
System.out.println(sb3.length());//5 是内容的长度
System.out.println(sb3.capacity());//5? 16? 5+16=21
//扩充2*初始容量+2
StringBuilder类常见方法
添加方法
/*
* StringBuffer的添加功能:
* public StringBuffer append(String str):可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身
* public StringBuffer insert(int offset,String str):在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身
*/
public class StringBufferDemo
public static void main(String[] args)
// 创建字符串缓冲区对象
StringBuffer sb = new StringBuffer();
// 一步一步的添加数据
// sb.append("hello");
// sb.append(true);
// sb.append(12);
// sb.append(34.56);
// 链式编程
sb.append("hello").append(true).append(12).append(34.56);
System.out.println("sb:" + sb);
// public StringBuffer insert(int offset,String
// str):在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身
sb.insert(5, "world");// helloworld
System.out.println("sb:" + sb);
删除方法
/*
* StringBuffer的删除功能
* public StringBuffer deleteCharAt(int index):删除指定位置的字符,并返回本身
* public StringBuffer delete(int start,int end):删除从指定位置开始指定位置结束的内容,并返回本身
*/
public class StringBufferDemo
public static void main(String[] args)
// 创建对象
StringBuffer sb = new StringBuffer();
// 添加功能
sb.append("hello").append("world").append("java");
System.out.println("sb:" + sb);
// public StringBuffer deleteCharAt(int index):删除指定位置的字符,并返回本身
// 需求:我要删除e这个字符,肿么办?
sb.deleteCharAt(1);
// public StringBuffer delete(int start,int end):删除从指定位置开始指定位置结束的内容,并返回本身
// 需求:我要删除world这个字符串,肿么办? 包左不包右 从0开始数
sb.delete(5, 10);//包左不包右
// 需求:我要删除所有的数据
sb.delete(0, sb.length());
System.out.println("sb:" + sb);
替换方法
/*
* StringBuffer的替换功能:
* public StringBuffer replace(int start,int end,String str):从start开始到end用str替换
*/
public class StringBufferDemo
public static void main(String[] args)
// 创建字符串缓冲区对象
StringBuffer sb = new StringBuffer();
// 添加数据
sb.append("hello");
sb.append("world");
sb.append("java");
System.out.println("sb:" + sb);
// public StringBuffer replace(int start,int end,String str):从start开始到end用str替换
// 需求:我要把world这个数据替换为"节日快乐"
sb.replace(5, 10, "节日快乐");
System.out.println("sb:" + sb);
反转方法
/*
* StringBuffer的反转功能:
* public StringBuffer reverse()
*/
public class StringBufferDemo
public static void main(String[] args)
// 创建字符串缓冲区对象
StringBuffer sb = new StringBuffer();
// 添加数据
sb.append("江小爱我");
System.out.println("sb:" + sb);
// public StringBuffer reverse()
sb.reverse();
System.out.println("sb:" + sb);
转换方法
方法名 | 说明 |
---|---|
public String toString() | 将StringBuilder转换为String |
//创建对象
StringBuilder sb = new StringBuilder("Hello");
String str = sb.toString();
StringBuilder和String相互转换
-
StringBuilder转换为String
public String toString():通过 toString() 就可以实现把 StringBuilder 转换为 String
-
String转换为StringBuilder
public StringBuilder(String s):通过构造方法就可以实现把 String 转换为 StringBuilder
-
示例代码
/* StringBuilder 转换为 String public String toString():通过 toString() 就可以实现把 StringBuilder 转换为 String String 转换为 StringBuilder public StringBuilder(String s):通过构造方法就可以实现把 String 转换为 StringBuilder */ public class StringBufferTest public static void main(String[] args) // String -- StringBuffer String s = "hello"; // 注意:不能把字符串的值直接赋值给StringBuffer // StringBuffer sb = "hello";//错误 // StringBuffer sb = s;//错误 // 方式1:通过构造方法 StringBuffer sb = new StringBuffer(s); System.out.println("sb:" + sb); // 方式2:通过append()方法 String -- StringBuffer StringBuffer sb2 = new StringBuffer(); sb2.append(s); System.out.println("sb2:" + sb2); System.out.println("---------------"); // 方式1:通过构造方法 StringBuffer -- String StringBuffer buffer = new StringBuffer("java"); String str = new String(buffer); System.out.println("str:" + str); // 方式2:通过toString()方法 StringBuffer -- String String str2 = buffer.toString(); System.out.println("str2:" + str2);
StringBuilder,StringBuffer和String区别
面试用
StringBuilder 所有的方法和StringBuffer方法都一样,把我们上面的StringBuilder都可以改成StringBuffe常用
A: String是内容不可变的,而StringBuffer,StringBuilder都是内容可变的。
B: StringBuffer是同步的,数据安全,效率低.方法前关键字synchronized。
C: StringBuilder是不同步的,数据不安全,效率高,单线程;
StringBuilder案例 TODO
字符串拼接案例
-
案例需求
定义一个方法,把 int 数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果。例如,数组为int[] arr = 1,2,3; ,执行方法后的输出结果为:[1, 2, 3]
-
代码实现
/* 需求: 定义一个方法,把 int 数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果。 例如,数组为int[] arr = 1,2,3; ,执行方法后的输出结果为:[1, 2, 3] 思路: 1:定义一个 int 类型的数组,用静态初始化完成数组元素的初始化 2:定义一个方法,用于把 int 数组中的数据按照指定格式拼接成一个字符串返回。 返回值类型 String,参数列表 int[] arr 3:在方法中用 StringBuilder 按照要求进行拼接,并把结果转成 String 返回 4:调用方法,用一个变量接收结果 5:输出结果 */ public class StringBuilderTest01 public static void main(String[] args) //定义一个 int 类型的数组,用静态初始化完成数组元素的初始化 int[] arr = 1, 2, 3; //调用方法,用一个变量接收结果 String s = arrayToString(arr); //输出结果 System.out.println("s:" + s); //定义一个方法,用于把 int 数组中的数据按照指定格式拼接成一个字符串返回 /* 两个明确: 返回值类型:String 参数:int[] arr */ public static String arrayToString(int[] arr) //在方法中用 StringBuilder 按照要求进行拼接,并把结果转成 String 返回 StringBuilder sb = new StringBuilder(); sb.append("["); for(int i=0; i<arr.length; i++) if(i == arr.length-1) sb.append(arr[i]); else sb.append(arr[i]).append(", "); sb.append("]"); String s = sb.toString(); return s;
字符串反转案例
-
案例需求
定义一个方法,实现字符串反转。键盘录入一个字符串,调用该方法后,在控制台输出结果
例如,键盘录入abc,输出结果 cba
-
代码实现
import java.util.Scanner; /* 需求: 定义一个方法,实现字符串反转。键盘录入一个字符串,调用该方法后,在控制台输出结果 例如,键盘录入abc,输出结果 cba 思路: 1:键盘录入一个字符串,用 Scanner 实现 2:定义一个方法,实现字符串反转。返回值类型 String,参数 String s 3:在方法中用StringBuilder实现字符串的反转,并把结果转成String返回 4:调用方法,用一个变量接收结果 5:输出结果 */ public class StringBuilderTest02 public static void main(String[] args) //键盘录入一个字符串,用 Scanner 实现 Scanner sc = new Scanner(System.in); System.out.println("请输入一个字符串:"); String line = sc.nextLine(); //调用方法,用一个变量接收结果 String s = myReverse(line); //输出结果 System.out.println("s:" + s); //定义一个方法,实现字符串反转。返回值类型 String,参数 String s /* 两个明确: 返回值类型:String 参数:String s */ public static String myReverse(String s) //在方法中用StringBuilder实现字符串的反转,并把结果转成String返回 //String --- StringBuilder --- reverse() --- String // StringBuilder sb = new StringBuilder(s); // sb.reverse(); // String ss = sb.toString(); // return ss; return new StringBuilder(s).reverse().toString();
Math类
Math类概述
`java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。类似这样的工具类,其所有方法均为静态方法,并且不会创建对象,调用起来非常简单。
3.2 Math类常用方法
方法名 | 说明 |
---|---|
Math.PI | 常量,圆周率 |
public static double abs(double num) | 取绝对值 |
public static double ceil(double num) | 向上取整 |
public static double floor(double num) | 向下取整 |
public static long round(double num) | 四舍五入 |
public static int max(int a, int b) | 求最大值 |
public static int min(int a, int b) | 求最小值 |
public static double pow(double a, double b) | 求a的b次幂 |
public static double random() | 随机数,随机的范围[0,1) |
代码演示
public class MathDemo
public static void main(String[] args)
System.out.println(Math.abs(-5));//取绝对值值为5
System.out.println(Math.abs(5));//取绝对值值为5
System.out.println(Math.ceil(3.3));//向上取整值为 4.0
System.out.println(Math.ceil(-3.3));//向上取整值为 ‐3.0
System.out.println(Math.ceil(5.1));//向上取整值为 6.0
System.out.println(Math.floor(3.3));//向下取整值为3.0
System.out.println(Math.floor(-3.3));//向下取整值为‐4.0
System.out.println(Math.floor(5.1));//向下取整值为 5.0
System.out.println(Math.round(5.5));//四舍五入值为6.0
System.out.println(Math.round(5.4));//四舍五入值为5.0
Arrays类
Arrays类概述
java.util.Arrays
此类包含用来操作数组的各种方法,比如排序和搜索等。其所有方法均为静态方法,调用起来非常简单。简单来说:Arrays这个是专门用来操作数组相关的工具类
Arrays类概述
方法名 | 说明 |
---|---|
public static String toString(int[] a) | 返回指定数组内容的字符串表示形式。 |
public static void sort(int[] a) | 对指定的int型数组按数字升序进行排序。 |
代码演示
public class ArraysDemo
public static void main(String[] args)
// 定义int 数组
int[] arr = 2,34,35,4,657,8,69,9;
// 打印数组,输出地址值
System.out.println(arr); // [I@2ac1fdc4
// 数组内容转为字符串
String s = Arrays.toString(arr);
// 打印字符串,输出内容
System.out.println(s); // [2, 34, 35, 4, 657, 8, 69, 9]
// 定义int 数组
int[] arr = 24, 7, 5, 48, 4, 46, 35, 11, 6, 2;
System.out.println("排序前:"+ Arrays.toString(arr)); // 排序前:[24,7,5,48,4,46,35,11,6,2]
// 升序排序
Arrays.sort(arr);
System.out.println("排序后:"+ Arrays.toString(arr));// 排序后:[2,4,5,6,7,11,24,35,46,48]
System类
System类概述
java.lang.System
类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在System类的API文档中。常用的方法有:
方法 | 说明 |
---|---|
public static long currentTimeMillis() | 返回以毫秒为单位的当前时间。1秒=1000毫秒 |
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) | 将数组中指定的数据拷贝到另一个数组中。 |
public static void exit(int status) | 用来结束正在运行的Java程序。参数传入一个数字即可。通常传入0记为正常状态,其他为异常状态 |
currentTimeMillis方法
实际上,currentTimeMillis方法就是 获取当前系统时间与1970年01月01日00:00点之间的毫秒差值
import java.util.Date;
public class SystemDemo
public static void main(String[] args)
System.out.println("我们喜欢江一燕");
System.exit(0);
System.out.println("我们也喜欢梅老师");
System.out.println(System.currentTimeMillis());
// 单独得到这样的实际目前对我们来说意义不大
// 那么,它到底有什么作用呢?
// 要求:请大家给我统计这段程序的运行时间
long start = System.currentTimeMillis();
for (int x = 0; x < 100000; x++)
System.out.println("hello" + x);
long end = System.currentTimeMillis();
System.out.println("共耗时:" + (end - start) + "毫秒");
arraycopy方法
以上是关于day11-StringBuilder&Math&Arrays&包装类&日期时间类的主要内容,如果未能解决你的问题,请参考以下文章