包装类
包装类对应
-
byte Byte
-
short Short
-
int Integer
-
long Long
-
float Float
-
double Double
-
boolean Boolean
-
char Character
类型转换与装箱、拆箱
//自动装箱
int num=1;
Integer integer=num;
System.out.println(integer);
//自动拆箱
int num2=integer;
System.out.println(num2);
}
基本类型存放在栈中,引用类型存放在堆中,包装类就是把栈中的基本类型转换成引用类型,也就是存放到堆中
Integer缓冲区
缓冲区范围: -128到127
public static void main(String[] args) {
//面试题
Integer integer1=new Integer(100);//new出了一个新对象,存放在堆中的100,两个100在堆中的地址不同
Integer integer2=new Integer(100);
System.out.println(integer1==integer2);
Integer integer3=Integer.valueOf(100);//自动装箱,调用的Integer.valueOf方法 integer3==integer4,自动装箱没显示该方法而已
Integer integer4=100;//自动装箱,调用的Integer.valueOf方法 Integer缓冲区为-128到127,因为integer3和integer4都为100,指向到缓冲区的100,所以两者相同
System.out.println(integer3==integer4);
Integer integer5=200;//自动装箱,调用的Integer.valueOf方法 Integer缓冲区为-128到127,因为integer5和integer6为200,超出了缓冲区范围,看源码得知超出范围则new了一个Integer对象,所以不同
Integer integer6=200;//自动装箱,调用的Integer.valueOf方法
System.out.println(integer5==integer6);
}
String类
-
字符串是常量,创建之后不可改变
-
字符在字面值存储在字符串池中,可以共享
-
String s = "hello";产生一个对象,字符串池中储存
String name ="hello";//hello 进入字符串池中储存着
name = "zhangsan"; //zhangsan 赋值给name,并没有把hello修改,而是在字符串池中新开辟了一个字符串值
String name2="zhangsan";//name2可以直接获取字符串池中的字符串,不用新开辟一个字符串
//另一种方式创建字符串
String str=new String("java");
String str2=new String("java");
//==比较地址,equals比较值,equals重写后,没重写之前也是比较地址
System.out.println(str==str2);
System.out.println(str.equals(str2));
String类常用方法
//常用方法
String content="java是世界上最好用的语言,java,java";
//length()方法
System.out.println(content.length());//返回字符串长度
//charAt()方法
System.out.println(content.charAt(content.length()-1));//返回某个位置的字符
//contains()方法
System.out.println(content.contains("java"));//判断是否包含某字符串,有则返回true,没有返回false
System.out.println(content.contains("php"));
//toCharArray()方法
System.out.println(Arrays.toString(content.toCharArray()));//返回字符串对应的数组,重写数组的方法
//indexOf方法
System.out.println(content.indexOf("java"));//返回字符串首次出现的位置
System.out.println(content.indexOf("java",16));//fromindex:从该字符串的第几个下标开始寻找
System.out.println(content.lastIndexOf("java"));//返回字符串最后一次出现的位置
System.out.println("---------------");
//trim(),toUpperCase(),toLowerCase()方法
String content2=" Hello World ";
System.out.println(content2.trim());//去掉字符串前后的空格
System.out.println(content2.toUpperCase());//把小写转成大写
System.out.println(content2.toLowerCase());//把大写转成小写
System.out.println("---------------");
//startsWith(),endsWith()方法
String filename="hello.java";
System.out.println(filename.startsWith("hello"));//判断是否以什么字符串开始
System.out.println(filename.endsWith("java"));//判断是否以什么字符串结束
System.out.println("---------------");
//replace()方法
System.out.println(content.replace("java","php"));//把一个字符串中指定的某个部位替换成新的字符串
//split()方法
String say="java is the best programing language,java good";
String[] arr=say.split("[ ,]+");//对字符串进行拆分,”【,】“可以对 ”字符串里的 逗号,“进行拆分,在加个+“可继续拆分空格
System.out.println(arr.length);//打印数组长度
for (String string: arr
) {
System.out.println(string);//遍历输出每一个数组
}
System.out.println("-----------------");
//equals拓展
String s1="hello";
String s2="Hello";
System.out.println(s1.equals(s2));//区分大小写
System.out.println(s1.equalsIgnoreCase(s2));//不区分大小写
//compareTo()方法
String s3="abc";
String s4="xyz";
System.out.println(s3.compareTo(s4));//比较首字母的编码大小,此处为a=97减去x=120 =-23
String s5="abc";
String s6="abcd";
System.out.println(s5.compareTo(s6));//如果两者字符串编码一致,则比较字符串长度,长度编码一致为0
}
可变字符串
StringBuffer:可变长字符串,JDK1.0提供,运行效率慢、线程安全。
StringBuilder:可变长字符串,JDK5.0提供,运行效率快、线程不安全
public static void main(String[] args) {标签:常用,java,String,包装,System,字符串,println,out From: https://www.cnblogs.com/zwj2002/p/16723456.html
//StringBuffer 和 StringBuild 比String效率高,节省内存
//以下所有方法把StringBuffer替换成StringBuild均可实现,效果一致
StringBuffer sb=new StringBuffer();
//append() 追加
sb.append("java世界第一");
System.out.println(sb);//可使用sb.toString方法,不管追加什么都使用字符串输出
sb.append("java真香");
System.out.println(sb.toString());
sb.append("java真不错");
System.out.println(sb.toString());
//insert()添加
sb.insert(0,"最前面");//在下标前添加
System.out.println(sb.toString());
//replace() 替换
sb.replace(0,7,"hello");//从0到7,不包括7的下标替换成该字符串
System.out.println(sb.toString());
//delete() 删除
sb.delete(0,5);//删除下标0开始到下标5结束,不包括5
System.out.println(sb.toString());
//清空sb
// sb.delete(0,sb.length());
}