目录
时间类型 String -- 第一阶段的时间类型(jdk已弃用,不再维护了)
包装类
Java为每一个基本数据类型都提供一个引用类型,这些引用类型就叫包装类。
int age=0 --- Integer i=new Integer(34); 或 Integer i1 = new Integer("123");
学习包装类的原因:
1.默认值不同,基本数据类型的默认值没有办法证明不是真实值;
2.集合 --替换--> 数组,集合只能存储引用数据变量。不能存储基本数据类型。
3.包装类更符合面向对象思想。
所在包:java.lang
父类:java.lang.Number
接口:Serializable , Comparable < Integer >
属性:Integer.MAX_VALUE ;Integer.MIN_VALUE
构造方法: Integer(int value) ; Integer(String s)
方法: compare(int x, int y)
compareTo(Integer anotherInteger) //比较+排序 0 1 -1
equals(Object obj)
parseInt(String s) 最常用: 把一个字符串转成int 变量
方法:
.compareTo():比较+排序 输出的有0,1,-1;0是一样,1是在前,-1是在后。
其实相当于:i1比新建的Integer大就输出1,小就输出-1,相等就输出0。
.equals ():判断i1的对象是否与新建的Integer( )的对象相等
相等就输出true,不相等就输出false。
.parseInt ():将字符串参数解析为有符号的十进制整数
可以做算数运算
自动拆装箱:
Integer i3 = 9;
System.out.println(i2*3);
↓程序自动进行 拆装箱----对out里的对应字节码文件进行反编译
Integer i3 = Integer.valueOf(9); //装箱
System.out.println(i3.intValue() * 3); //拆箱 输出:27
BigInteger:超级超级大的数 eg:100,000,000,000,000,000,000
加(合) .add 减(差) .substract 乘(积) .multiply 除(商) .divide
BigDecimal:小数点后超多位精度的小数 eg:123.4567890123456789012345
加(合) .add 减(差) .substract 乘(积) .multiply
除(商) -- 需要写计算法则: 被除数.divide(除数,保留小数点位数,提供的出发计算法则)
数学类
import java.lang.Math;
随机数:random()是Double类型的,如果要整数必须进行强制类型转换,区间是[0.0,1.0)
int number = (int)(Math.random()*31+20); --> [20,50]之间的随机整数
random其实是伪随机
括号里面的参数是随机种子,种子相同产生的随机数相同(种子是long类型的)
同一个种子输出的随机数是按固定顺序的
第一个random和第一个random1,第二个random和第二个random1,第三个random和第三个random1...都是一样的,只是每次的random都互不相同。
时间类型 String -- 第一阶段的时间类型(jdk已弃用,不再维护了)
java.util.Date 无参有参都有
Date dt = new Date(); //无参:默认获得当前系统时间
Date dt1 = new Date(2025-1900 , 8-1, 7); //有参:根据参数获得一个时间对象(可以继续加几点几分几秒)
拆开格式:
System.out.println("年:"+(1900+dt.getYear())); //万年历是从1900开始的
System.out.println("月:"+(1+dt.getMonth())); // 西方月份从0开始计算
System.out.println("日:"+dt.getDate());
System.out.println("小时:"+dt.getHours());
System.out.println("分钟:"+dt.getMinutes());
System.out.println("秒:"+dt.getSeconds());
System.out.println("星期:"+dt.getDay());
java.util.Date 没有无参构造
java.sql.Date sdt = new java.sql.Date(125,7,1); // 结果格式是yyyy-MM-dd
Date dt2 = new Date(125,7,1,14,1,56); // 年份是从1900开始的,月份是从0开始的
时间格式工具类 SimpleDateFormat
改上面的dt1的格式:(只要日期可以写到yyyy-MM-dd)HH是24进制,hh是12进制
时间类型--第二阶段的时间类型 (可修改,不安全)
Calendar 日历类(抽象类)
两种创建方式:--- 结果会输出一长串
Calendar calendar = Calendar.getInstance(); //类名.调用方法 获得日历类对象
Calendar calendar1 = new GregorianCalendar(); // 这俩是当前系统时间
没有格式处理的工具类,存储时间信息多,jdk会维护
.YEAR .MONTH .DAY_OF_MONTH .DAY_OF_YEAR .HOUR_OF_DAY .HOUR
.DATE .DAY_OF_WEEK_IN_MONTH 有这天的周是这个月的第几周
.WEEK_OF_MONTH .WEEK_OF_YEAR 今年的第几周
.AM_PM:上午返回0,下午返回1 ( .前面是对象名)
.get(Chalendar.YEAR/MONTH...) 获得指定的时间部分信息(月份需+1)
.add.get(Chalendar.YEAR/MONTH..., +1) 添加/减少 指定的时间部分
↑ calendar的月份是8,但是是第7个月份,+1出来的是8月,-1出来的是6月
.set(year, month, date [, hourOfDay, minute, second] ) 重新设置时间(月*)
.getActualMaximun(Calendar.DATE ) 这个月一共有几天
转换方法:String(字符串) --转成-- Calendar(日历类型)
缺点:可变性--时间应该是不可变的
时间类型--第三阶段的时间类型
LocalDate
LocalDate ld = LocalDate.now(); // 默认获得系统时间(格式:yyyy-MM-dd)
LocalDate of = LocalDate.of(2025, 9, 27); // 自定义时间(不能加具体几点)
System.out.println(of.getDayOfWeek()); // 看这天是星期几 ---> 输出:SATURDAY
格式工具类 DateTimeFormatter
DateTimeFormatter dtf = DateTimeFormatter.ISO_LOCAL_DATE;
System.out.println(dtf.format(of));
ISO_LOCAL_DATE
是DateTimeFormatter类的一个预定义常量,它表示ISO-8601标准的本地日期格式,即"yyyy-MM-dd"。这个格式化器不包含时间部分,只处理日期(年、月、日)。
它是线程安全的,可以定义为静态常量重复使用。
如果输入字符串不符合格式(比如缺少月份或日期),解析时会抛出DateTimeParseException。
String类
字符串:底层就是char[]
一个内存地址 对应一个信息值; 一个内存地址对应多个信息值
String [不可变] StringBuffer 线程安全的,效率低 [可变] StringBuilder 不安全的,效率高 [可变]
String str1 = new String("\t879865 AaBbCcD\t"); --->空格\t和” ”都算一个字符
常用方法:
.substring( beginindex ) 截取:从输入的下表开始截取,到最后(新产生一个字符串)
.substring( 开始下标 , 结束下标-1 )
截取:从输入的第一个下标开始截取,到输入的第二个下标-1 (前包后不包)
.concat( str ) 拼接
Arrays.toString( 数组 ) 将 数组 转换为可读的 字符串 表示形式
.toCharArray() 将 字符串 转换为一个新的 字符数组 (字符串中的每个字都是数组的一个元素)
.equals() String类重写了equals方法,它比较的是两个字符串的内容(字符序列)是否完全相同
完全相同就返true,不完全相同就返false
.lastIndexOf( str ) //查找参数所在的位置(从后往前找) ,输出下标
.IndexOf( str ) //查找参数所在的位置(从前往后找),输出下标
如果两个结果一样,说明只有一个该参数,不一样就是有两个或以上
.isEmpty() //判断是否是空字符串? true:空 false:非空
.length() //获得长度
String strtime = "2025-12-12"; //从控制台接收一个yyyy-MM-dd字符串,为java.sql.Date赋值
年份是从1900开始的,所以得-1900;月份的12表示第十三个月,所以输出了下一年的一月
.replace( target, replacement ) //替换
.charAt( index ) // 输出index下标所对应的字符
.contains( str ) //判断这段字符串里有没有输入的字符串,有是true,没有是false
.trim() 去除字符串两端的空白字符(如空格、制表符、换行符等),并返回处理后的字符串。
如果字符串两端没有空白字符,则返回原字符串本身。
.endsWith( String ) //前面的字符串是否以后面的字符串结束
.startsWith( String ) //前面的字符串是否以后面的字符串开始
String str3 = new String("\t8");
.toLowerCase() //所有字符换成小写
.toUpperCase() //所有字符换成大写