1. 基本数据类型包装类
Java是一种纯面向对象语言,但是java中有8种基本数据类型,破坏了java为纯面向对象的特征。为了承诺在java中一切皆对象,java又给每种基本数据类型分别匹配了一个类,这个类我们称之为包装类。
注意:每个基本数据类型都有一个与之匹配的包装类。
1.1 八大基本数据类型的包装类
1.2 包装类中的常用方法
装箱:把基本数据类型包装为对应的包装类对象
1、 Integer i1 = new Integer(10); // 利用构造方法
2、 Integer i2 = Integer.valueOf(10); //利用包装类中的静态方法
拆箱:把包装类对象转换为对应的基本数据类型。
int i3= i1.intValue(); //返回包装类对象i1对应的基本数据
1.3 自动装箱和自动拆箱
1、 自动装箱:可以直接把一个基本数据类型赋值给包装类
例如: Double d = 3.3; //自动装箱操作
2、 自动拆箱:可以直接把一个包装类对象,赋值给基本类型
例如:int a = new Integer(3); //自动拆箱。
2. 字符串的常用方法
2.1字符串转字符数组、统计长度、从头尾查找下标值、包含、截取、根据下标返回值
System.out.println("========常用方法================");
//1.构造方法,数组转字符串
char[] chars = {'a','b','c','d','e'};
String str1 = new String(chars);
System.out.println(str1);
//(字符数组,起止下标,个数)
//str1 = new String(chars,1,3);
System.out.println(str1);
//2、字符串转换成字符数组
char[] chars1 = str1.toCharArray();
System.out.println(chars1.length);
String message ="hello world learn java哈";
//3.统计长度
int length = message.length();
System.out.println("长度是:"+length);
//4.IndexOf():默认从头开始查找获取指定字符串的下标值
int index = message.indexOf("o");
System.out.println("从头查找index:"+index);
index = message.indexOf("o",5);
System.out.println("指定下标查找index:"+index);
//从末尾开始找,如果没找到就返回-1, -1表示不包含
index = message.lastIndexOf("0");
System.out.println("末尾查找index:"+index);
//5.contains(""): 判断是否包含某字符串
boolean flag = message.contains("world");
System.out.println(flag);
//6.根据下标返回具体的值
char c = message.charAt(5);
System.out.println("字符:"+c);
//7.截取(开始下标,结束下标),取前不取后 >=beginindex <endindex
String msg = message.substring(1, 10);
System.out.println("截取:"+msg);
//从开始下标截取到末尾
msg = message.substring(3);
System.out.println("截取:"+msg);
2.1字符串的替换、转换、拼接、比较、判断开头字符和结尾字符、拆分数组
//8、替换replace(老的值,替换后的值)
msg = message.replace('b','x');
System.out.println("替换:"+msg);
msg = message.replace("world","xxoo");
System.out.println("替换:"+msg);
msg = message.replaceFirst("e","xxoo");
System.out.println("替换:"+msg);
//9.转换成大小写
msg = message.toUpperCase();
System.out.println("大写:"+msg);
String s = msg.toLowerCase();
System.out.println("小写"+s);
//10.字符串拼接,类似+
msg = message.concat("12356abc");
System.out.println("拼接:"+msg);
//11.比较
boolean bl = message.equals("abc");
System.out.println(bl);
//比较字符串对象的值不区分大小写
boolean bl1 = message.equalsIgnoreCase("abc");
//12、字符串转成字节数组
byte[] bytes = message.getBytes();
System.out.println(bytes.length);
//13.判断开头字符和结尾字符
boolean hell = message.startsWith("h");
System.out.println("开头是否有:"+hell);
//14.将字符串根据符号拆分成数组 "12,33,55,77"
String phone ="86-0731-12345678";
String[] phones = phone.split("-");
int sum = 0;
for (int i = 0; i < phones.length; i++) {
System.out.println(phones[i]);
//字符串转换成整数
int num = Integer.parseInt(phones[i]);
//Double.parseDouble()
sum+=num;
}
System.out.println("累加和:"+sum);
3.常考面试题
面试题:请解释String对象的两种实例化方式的区别?
• String对象的实例化方式有两种:一种是直接赋值,另外一种是通过构造方法完成;
• 直接赋值:只开辟一个堆内存空间,而且采用了共享设计模式,可以自动的入池,以备下次对象继续使用;
• 构造方法:会开辟两块内存空间,其中有一块空间将成为垃圾,而且不会自动入池,但是可以使用intern()方法进行手工入池;
• 从开发角度而言,很明显使用直接赋值的方式会更好一些。