基本数据类型 | 对应的包装类 | 继承关系 |
---|---|---|
byte | Byte | --》Number--》Object |
short | Short | --》Number--》Object |
int | Integer | --》Number--》Object |
long | Long | --》Number--》Object |
float | Float | --》Number--》Object |
double | Double | --》Number--》Object |
char | Character | Object |
boolean | Boolean | Object |
被final修饰,不能被继承
属性:MAX_VALUE表示int类型能够表示的最大值
? MIN_VALUE表示int类型能够表示的最小值
没有无参构造器,可以传入int或String类型的数据
Integer i=new Integer(10);
Integer j=new Integer("15");
Integer l=new Integer("asd");//编译通过,运行异常!!!转换不了
? 数字格式化异常:java.lang.NumberFormatException
自动装箱和自动拆箱(JDK1.5之后)
Integer i=128;//自动装箱
Integer k=128;//自动装箱
int j=i;//自动拆箱
System.out.println(i+1);//自动拆箱后运算
i==k//false ==不会触发自动拆箱,比较的是两个对象的地址
Integer m=127;//自动装箱
Integer n=127;//自动装箱
m==n;//true!!!!!!!!! m和n指向同一个对象
Java中为提高效率,将【-128,127】之间的所有包装对象提前建好,放入方法区的整数型常量池中,只要使用这个区间的数据,不需要再new,直接在常量池中取(Integer类加载时会初始化整数型常量池)
comparaTo方法
相等返回0,i<j返回-1,i>j返回1
Integer i=new Integer(10);
Integer j=new Integer("15");
i.comparaTo(j);//相等返回0,i<j返回-1,i>j返回1
equals方法
i.equals(j);//相等返回true,否则返回
intValue();
将Integer转换成int类型
Integer i=new Integer(10);
int j=i.intValue();
parseInt(String s); 静态方法
将字符串数字转换成int类型
int i=Integer.parseInt("123");
toBinaryString(int i); 静态方法
将10进制转换成二进制字符串
String s=Integer.toBinaryString(7);//s="111"
valueOf(int i)/(String s); 静态方法
将int类型、String类型转换成Integer
![image-20210802133858045](C:\Users\Monster y\AppData\Roaming\Typora\typora-user-images\image-20210802133858045.png)
### **java.util.Date**
date对象
Date nowTime =new Date();//获取系统当前时间,精确到毫秒
after(Date d); before(Date d); compareTo(Date d);
比较时间先后
nowTime1.after(nowTime2);//1时刻在2时刻后面返回true
nowTime1.before(nowTime2);//时刻在2时刻前面返回true
nowTime1.comparaTo(nowTime2);//1时刻在2时刻后面返回1,相等返回0,否则返回-1
Calendar对象
Calendar c=Calendar.getInstance();
System.out.println(c.getTime());//打印时间信息
获取毫秒数
自1970年以来到当前系统时间的总毫秒数
System.out.println(c.getTimeInMillis());//打印毫秒数
获取时间信息
int year=c.get(Calendar.YEAR);
int month=c.get(Calendar.MONTH);//月份返回0~11,比正常月份少一!!
int day=c.get(Calendar.DAY_OF_MONTH);
int hour=c.get(Calendar.HOUR_OF_DAY);
int minute=c.get(Calendar.MINUTE);
int second=c.get(Calendar.SECOND);
修改时间
Calendar c2=Calendar.getInstance();
c2.set(Calendar.DAY_OF_MONTH,21);//将c2的日期改为21号
add方法修改时间
Calendar c3=Calendar.getInstance();
c3.add(Calendar.HOUR,-2);//小时减2
获取当前时间月份的最大天数
int max=c.getActuaMaximum(Calendar.HOUR_OF_DAY);//28,29,30,31
yyyy | 年份如2020 |
---|---|
MM | 月份如9 |
dd | 天 |
HH | 时 |
mm | 分 |
ss | 秒 |
SSS | 毫秒 |
System.out.println("========================");
SimpleDateFormat s=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss SSS");//创建SimpleDateForma对象
Date d=new Date();//创建Date对象
String str=s.format(d);//格式化Date(日期---->字符串)System.out.println(str);//解析(字符串--->日期)
Date d2=s.parse(str);//解析时字符串必须与SimpleDateForma对象的格式一致
System.out.println("========================");
数组复制
arraycopy(目标数组,拷贝起始下标(包括),结果数组,复制起始下标(包括),长度);
int[] arr={20,16,16,200,31,91,52}; int[] dest= new int[7]; System.arraycopy(arr,4,dest,4,3);//dest:0 0 0 0 31 91 52
获取系统时间毫秒数
System.out.println(System.currentTimeMillis());
垃圾回收
垃圾回收器不会回收常量池中的内存
System.gc();//让垃圾回收器回收垃圾
推出程序
System.exit(0);
1.字符串是常量,创建后不可改变
2.字符串字面值存储在字符串池中(方法区内存),可以重复使用
String s="hello";//字符串池中创建一个“对象”,s指向他 String s1="hello";//s和s1指向的地址相同 String s2=new String("你好");//在堆内存和字符串常量池中各有一个对象 //s2指向堆内存中的对象,堆内存中的对象指向常量池中的对象 String s3=new String("你好");//s2和s3指向的地址不同,分别指向堆内存中的两个对象 //堆内存的两个对象指向常量池中的同一个对象
length();
返回字符串的长度
charAt(int index);
返回某个位置的字符,index范围:0~(length-1)
若超过范围会出现字符串下标越界异常:java.lang.StringIndexOutOfBoundsException
contains(String str);
判断是否包含某个子字符串,返回boolean类型
toCharArray();
返回字符串对应的数组
indexOf(String s); lastIndexOf(String s)
返回子字符串首次/最后出现的位置 index范围:0~(length-1)
trim();
去掉字符串前后的空格,返回新的zfc
toUpperCase(); toLowerCase();
把小写转换成大写/大写转换成小写,返回新的字符串
endWith(String s); startWith(String s);
判断是否以字符串s结尾/开头,返回boolean类型
replace( oldstr , newstr );
用新的字符串替换旧的字符串,并返回新的字符串
split(String s);
对字符串进行拆分,返回字符串数组
String s="i ,am Chinese !"; String[] s1=s.split(" ");//以空格为标准拆分 String[] s2=s.split("[ ,]");//[]表示多种拆分标准,这里选择空格和“,” String[] s1=s.split("[ ,]+");//这里+使连续多个空格或“.”只表示一个拆分标准
equals(String s);
String s="hello"; Strings1="Hello"; System.out.println(s.equals(s1));//false System.out.println(s.equalsIngnoreCase(s1));//true,这里比较时忽略大小写
comparaTor(String s);
对两个字符串逐个字符比较,当有一个不相同时结束比较,返回ASCII差值,若一个字符串结束后仍未比出结果,返回字符串长度差值,完全相等返回0
应用
//在text前面加一个easyString s="this is a text";
String str=s.replace("text","easy text");
System.out.println(str);//将每个单词首字母大写
String news="";
String[] arr=s.split(" ");//拆成字符串数组
for (int i = 0; i < arr.length; i++) {
char first=arr[i].charAt(0);//取出首字母
char Upperfirst=Character.toUpperCase(first);//找到对应大写
String newss = Upperfirst+arr[i].substring(1);//替换
news=news+newss+" ";//拼接成一个新字符串
}
System.out.println(news);
如果要进行大量的字符串拼接操作,为避免浪费常量池里的空间,提高效率,建议使用:
java.lang.StringBuffer和java.lang.StringBuilder
区别:StringBuffer中的方法都有synchronized关键字修饰,表示其在多线程环境下运行是安全的
append(String s); 追加
StringBuffer sb=new StringBuffer();
sb.append("java第一");
System.out.println(sb.toString());
insert(int offset,String s); 添加
offset不是index
StringBuffer sb=new StringBuffer();
sb.append("java第一");
System.out.println(sb.toString());
sb.insert(4,"永远");
System.out.println(sb.toString());//“java永远第一”
replace( int firstIndex ,int lastIndex , String s ); 替换
前闭后开,替换范围包括firstIndex,不包括lastIndex
delete(int firstIndex,int lastIndex); 删除
前闭后开,替换范围包括firstIndex,不包括lastIndex
sb.delete(0,sb.length());//清空
double d1=1.0;
double d2=0.9;
System.out.println(d1-d2);//0.09999999999999998
BigDecimal bd1=new BigDecimal("1.0");
BigDecimal bd2=new BigDecimal("0.9");
BigDecimal r1=bd1.subtract(bd2);//相减
System.out.println(r1);//0.1
传入的参数用字符串的形式!!!
subtract(); 减法
add(); 加发
multiply(); 乘法
divide(BigDecimal bd, int scal , RoundingMode mode ); 除法
执行除法运算时要抛出错误
scal: 指定精确到小数点后几位
mode:指定小数部分取舍模式,通常采用四舍五入,
? 取值:BigDecimal.ROUND_HALF_UP
超类、基类,所有类的直接或间接父类,位于继承树最顶层
Object类型可以储存任何对象,作为参数可接受任何对象,作为返回值可返回任何对象
getClass();
返回引用中存储的实际对象类型,通常用于判断两个引用实际存储对象是否一致
Object o1=new Student(); Person o2=new Person(); Class c1=01.getClass(); Class c2=02.getClass(); c1==c2;//false
hashCode();
返回该对象的哈希码值
哈希值是根据对象的地址或字符串或数字使用hash算法计算处的int类型数值
toString();
返回该对象的字符串表示
建议根据程序需求覆盖该方法
快捷键:alt+insert--->toString
equals(Object obj);
默认判断两个对象的地址是否相等
建议根据程序需求覆盖该方法
覆盖步骤
- 判断obj是否为空
- 判断是否是同一个引用
- 判断引用指向的实际对象类型是否一致
- 将obj强制类型转换
- 依次比较各个属性是否相同
快捷键:alt+insert--->equals
finalize();
当对象被判定为垃圾对象时,JVM自动调用此方法,用以标记此对象,进入回收队列
- 垃圾对象:没有有效引用指向此对象时,视为垃圾对象
- 垃圾回收:由GC销毁垃圾对象,释放储存空间
- 自动回收机制:JVM内存耗尽,一次性回收所有垃圾对象
- 手动回收机制:使用System.gc();通知JVM执行垃圾回收
原文:https://www.cnblogs.com/yangzx-hust/p/15091845.html