常用类
基本类型的包装类
八大基本类型:int
,short
,long
,byte
,double
,float
,char
,boolean
基本类型的包装类:
基本数据类型与包装类之间的转换:
装箱:把基本数据类型转换成包装类型
拆箱:把包装类型转换成基本数据类型
//自动装箱 int a = 20; Integer i = a; //自动拆箱 int c = i;
常遇问题:吧String类型转换为其他数值类型
public class Demo { public static void main(String[] args) { String s = "1235468"; Integer i = Integer.parseInt(s);//String类型转换为int类型 Double d = Double.parseDouble(s);//String类型转换为double类型 //其他数值类型同理 包装类型 类型名 = 包装类型.parse对应数据类型(String类型名) System.out.println(i); System.out.println(d); } }
字符串
字符串的使用场景:后期对数据库的一系列操作与字符串密切相关
字符串一共有三种类:
String
StringBuffer
StringBuilder
String类
String类成为不可变字符串
原因:在
jdk
源码中,String
存储的字符串存储在char
数组value[]
中, 这个数组使用final修饰,value
的数组无法改变,String
也就是一个不可变的字符串例子:
String str = "abc"; str = "abc"+ "d";
由上图,当我们创建一个
String
对象时,会在常量池中生成一个空间,里边存储了abc
这个值,他是不可改变的,而str
只是对abc
字符串进行引用,当执行str = "abc"+ "d";
时,常量池会产生三个空间分别存放字符串abc
、d
、abcd
。str
指向的地址由原来的abc
空间的地址ox001
变成了abcd
空间的地址ox585
。所以并没有对字符串abc
的值进行了改变,知识改变的str
的指向。
创建字符串
使用new关键字,构造方法
直接赋值
Stirng 变量 = 字符串常量对象; 列如: public class Demo { public static void main(String[] args) { String s = "1235468"; System.out.println(s); } }
字符串常量池String pool
创建的字符串都存在字符串常量池中
存放字符串的步骤:
在字符串常量池中查找是否已存在将要存放的字符串的空间
如果有,返回相应的字符串对象
如果没有,创建新的对象
字符串之间的比较
1)
字符串1 == 字符串2
:这种形式比较的是比较的是字符串的地址码public static void main(String[] args) { String Str1 = new String("123"); String Str2 = new String("123"); System.out.println(Str1 == Str2); }
2)
字符串1.equals(字符串2)
:这种形式比较的是字符串的内容public static void main(String[] args) { String Str1 = new String("123"); String Str2 = new String("123"); System.out.println(Str1.equals(Str2)); }
StringBuffer/StringBuilder
字符串类
String: 不可变的字符串, 频繁进行+操作, 在堆中创建String对象, 效率比较低, 频繁修改这个字符串, 第一个String不提供相关的方法, 原因: String是一个不可变的字符串, 效率低
对字符串进行频繁修改操作, jdk提供了StringBuilder/StringBuffer: 可变的字符串
StringBuffer与StringBuilder的区别:
StringBuffer是一个线程安全的, 所有的方法添加了synchronized关键字, 同步方法, 效率低
StringBuilder是一个线程不安全的, 所有方法都是非同步方法, 效率高