1. 包装类(位于java.lang中)
① 概念:对8种基本数据类型分别定义了对象类型,这些类称为基本数据类型包装类。
② 基本数据-包装类:【重点】
基本数据类型 包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
③ 数据类型之间的转换
//int ---- Integer
//int---->Integer
int a=12;
Integer i1 = new Integer(a);
System.out.println(i1);
Integer i2=Integer.valueOf(a);//静态方法
System.out.println(i2);
//Integer---->int
int a2 = i2.intValue();
System.out.println(a2);
//String --- Integer
//String--->Integer
String str="123";
Integer i3 = new Integer(str);
System.out.println(i3);
Integer i4 = Integer.valueOf(str);
System.out.println(i4);
System.out.println(i4);
//Integer--->String
String s1=i4.toString();
System.out.println(s1);
String s2=i4+"";
System.out.println(s2);
//int ---- String
//int--->String
int a3=123;
String s3=a3+"";
System.out.println(s3);
//String--->int【开发重点】
String s4="1234";
int a4=Integer.parseInt(s4);
System.out.println(a4);
注意:String转换成int/Integer时,要求String中内容必须是纯数字,
例如"123"/"2341",否则运行报错,错误信息如下:
java.lang.NumberFormatException(数字格式转换异常)
④ JDK5.0之后,提供了自动的装箱和拆箱功能,即包装类和基本数据类型之间
可以自动转换。【重点】
将基本数据类型自动转换成包装类型称为装箱。
int a=12;
Integer i=a;
或是:Integer i2=12;
将包装类型自动转换成基本数据类型称为拆箱。
Integer i=new Integer(10);
int a=i;//10
注意:自动装箱时,Integer i=12;默认调用Integer类中的valueOf方法。
Integer包装类对-128~127之间的数据做了预先的包装,存放在常
量池中,提高效率。【面试的难点】
例如:
Integer i1=new Integer(12);
Integer i2 = new Integer(12);
System.out.println(i1==i2);//false
Integer i3=12;//自动装箱:int--->Integer(默认调用valueOf方法)
Integer i4=12;
System.out.println(i3==i4);//true
⑤ 包装类在开发中的应用:【重点】
用于区分有效数据和无效数据,例如:0和null
2. String类
(位于java.lang中)
① 创建字符串的常用方式:【面试重点】
a. String str1="hello";//只会在串池产生一个对象
b. String str2=new String("world");
//会在内存中产生两个对象,一个在堆空间,另一个在串池中
② 常用的方法:
a.获取字符串的长度:length()
String str="hello";
str.length();
获取数组的长度:length:
int[] a={1,4,5};
a.length
b. String trim():去除字符串前后的空格。
开发应用:
String str4="123 ";
int a=Integer.parseInt(str4.trim());
System.out.println(a);
③ String对象是字面值常量,一旦创建内容不能更改,所有在串池中用于共享。
面试题目:
String s4="A"+"B"+"C";//编译器可知:"ABC",之后生成一个对象,是在串池中。
3. 可变长的字符串:(位于java.lang中)
StringBuffer:JDK1.0,线程安全,运行效率慢。
StringBuilder:
JDK5.0,线程不安全,运行效率快。
常用方法:
append(参数);//字符串的拼接,相当于String的concat或是+
常用的构造方法:
StringBuilder()
StringBuilder(String str)
面试题目:StringBuffer和StringBuilder的区别??
StringBuilder和 String 的区别?
eg:
package test_string;
/*
*String中的常用方法
*/
public class TestStringMethod {
public static void main(String[] args) {
String str="hello";
char c=str.charAt(3);
System.out.println(c);
/*Scanner sc = new Scanner(System.in);
System.out.println("输入一个字符:");
char c2=sc.next().charAt(6);
System.out.println(c2);*/
System.out.println(str.contains("lle"));//包含
char[] cs=str.toCharArray(); //将字符串转换成字符数组
for(int i=0;iSystem.out.println(cs[i]+" "+i);
}
String s1=new String("world");
String s2=new String("world");
System.out.println(s1==s2);//false
System.out.println(s1.equals(s2));//比较内容,true
String str2="hellohello";
System.out.println(str2.indexOf("ll"));//获取字符串在当前字符串中出现的第一次的首字符的下标,如果不存在则返回-1.
System.out.println(str2.indexOf("ll", 4));//从下标4开始查找字符串
System.out.println(str2.lastIndexOf("ll"));//查找字符串在当前字符串中最后一次出现的下标
System.out.println("获取字符串的长度:"+str2.length());
String str3=" he llo ";
System.out.println(str3);
System.out.println(str3.trim());//去除字符串的前后空格
String str4="123 ";
int a=Integer.parseInt(str4.trim());
System.out.println(a);
String str5="hello-world-hello";
String[] sp=str5.split("-");
System.out.println(sp.length);
for(int i=0;iSystem.out.println(sp[i]);
}
String str6="ww/38/100.0"; //IO
String[] sp2 = str6.split("/");
String ss1="hello";
String ss2="wrold";
String ss3=ss1.concat(ss2);//字符串拼接,等价于 "+"
System.out.println(ss3);
// "TestHello.java"是否以".java"结尾
String ss4="TestHello.java";
System.out.println(ss4.endsWith(".java"));
System.out.println(ss4.toUpperCase());//小写---》大写
System.out.println(ss4.toLowerCase());//大写---》小写
}
}
4. BigDecimal类
① 位置:java.math中
② 作用:精确表示、计算浮点数
③ 常用的构造方法:BigDecimal(String str)
④ 常用的功能方法:
a. BigDecimal add(BigDecimal bd):加法
例如:BigDecimal r1=bd1.add(bd2);//加法:bd1+bd2
b. BigDecimal subtract(BigDecimal bd):减法
例如:BigDecimal r2 = bd1.subtract(bd2);//减法:bd1-bd2
c. BigDecimal multiply(BigDecimal bd):乘法
例如:BigDecimal r3 = bd1.multiply(bd2);//乘法:bd1*bd2
d. BigDecimal divide(BigDecimal bd1,int scal,RoundingMode mode):除法
参数说明:BigDecimal bd1是分母的数据
int scal:精确到小数点后的位数
RoundingMode mode:取舍方式,常用的是四舍五入的方式:
BigDecimal.ROUND_HALF_UP