1.字符串类:String
a.特点:
1.所有的字符串常量("abc","def")都是String的类对象
2.字符串的字面值在创建之后不能更改
String str="abc";
str="def";//这里改变的是str指向的字符串对象的地址值
b.功能:
1.转换功能:
toUpperCase();//转换大写
toLowerCase();//转换小写
toCharArray();//"abc".charArray()=>{'a','b','c'}
2.获取功能:
length();//获取字符串长度
trim()://去除字符串两端空白
substring(int begin,int end)//截取[begin,end-1]的字符
indexOf(String str)//"abcd".indexOf("bc")//1
//"abcd".indexOf("e")//-1
charAt(int index)//"abcde".charAt(3)//d
3.判断功能:
contains()//判断大串是否包含小串
2.基本类型包装类
a. int Integer
char Character
byte Byte
long Long
float Float
double Double
boolean Boolean
包装类中都有一个将字符串转换为基本数据类型的静态的方法:parseXXX()
但是Character没有parseChar方法
b.JDK1.5以上支持:装箱与拆箱:
装箱:基本数据类型转换为该基本数据类型对应的包装类 例如:int-->Integer
拆箱:该基本数据类型对应的包装类转换为基本数据类型 例如:Integer-->int
如果参与数学运算,需要将包装类拆箱成基本类型
例如:
Integer i=12;//Integer i=new Integer(12);
i+=12;//i=i+12;//由于要参与数学运算,因此先把i指向的Integer对象拆箱成12
//i=12+12(24)
//由于i是Integer类型,不能直接赋值一个基本数据类型的值
//需要将24装箱,new Integer(24)把Integer对象地址给了i
c.装箱缓存机制:
如果装箱的数值在1byte范围(-128~127),同一个数值装箱将使用同一个对象
Integer i=127;//Integer i=new Integer(127);
Integer j=127;//i和j都指向new Integer(127);
System.out.println(i==j);//true
3.构造代码块与静态代码块
public class BlockDemo {
private static final String RESTAURANT = "牛肉汤";
static {
System.out.println("静态代码块被执行");
}
{
System.out.println("我是构造代码块");
}
public static void main(String[] args) {
/*
* 静态代码块随着类的加载而执行,并且只执行一次 构造代码块仅在创建该类对象的时候被执行,创建几次对象,就执行几次
* JVM中同名的(完全限定名:包名+类名)类只有一份
*/
System.out.println(BlockDemo.RESTAURANT);
new BlockDemo();
new BlockDemo();
}
}
4.四大皆空:
public class AllNull {
public static void main(String[] args) {
//第一空:局部变量未初始化不能直接使用
// int i;
// System.out.println(i);
//第二空:有变量,变量有值,但是值为null。 变量可以被打印!但是不能调用方法,会出现运行时异常空指针异常NullPointerException
int[] arr=null;
arr[0]=3;//运行时报空指针异常
String s = null;
System.out.println(s);//当s被传递的时候,已经确定参数的类型为String
//所以编译器回去调用println(String)
// System.out.println(s.length());
//第三空:""也是一个字符串对象,因此可以使用String类所有方法
// String s = new String();
// String s = "";
// System.out.println(s);
// System.out.println(s.length());
// System.out.println(s.isEmpty());//true
//第四空:
//null可以被任意引用类型接收,而println()方法底层有大量的重载方法(println(char[]),println(String))
//而这些重载方法的参数类型都是引用数据类型,都可以接收null,所以编译器无法确定调用哪个方法,所以编译报错
// System.out.println(null);
System.out.println(method());
// System.out.println(method2());//无返回值不能打印,没有意义直接编译报错
public static int method() {
return 1;
}
public static void method2() {
}
}
|
|