一、String
为了更好地了解String,先来一个测试。
public class Deme1 {
public static void main(String[] args) {
String s1="abc";
String s2="abc";
String s3=new String("abc");
String s4=new String("abc");
System.out.println(s1==s2);
System.out.println(s1==s3);
System.out.println(s3==s4);
}
}
你会发现答案会出乎你的意料,当初也是颠覆了我的世界观。我以为三个都会是 true 结果运行后才知道,只有第一个是 true 后面两个输出都是 false。我们先来了解一下 栈 和 堆的概念吧,因为 s1和s2 是在栈里面,当s1=“abc”的时候,在栈里面分配一个内存空间,而当 s2=“abc”实际上只是把 s2指向了abc这个空间的地址。new 是在堆里面新分配空间,双等号(==)是判读地址是否相等。要想判读两个字符串的值相等就用 equals()。
String的常用方法
1.equals():判断两个字符串是否相等。
2.length():求字符串的长度。
3.charAt(int index):取index下标对应的字符。
4.indexOf(String subString):求subString在字符串中第一次出现的下标。
5.lastindexOf(String subString):求子串在字符串中最后一次出现的下标。
6.substring(int index):截取从index下标开始的连续的子串,一直到最后。
7.substring(int index1,int index2):截取从index1开始,一直到index2结束的子串,但是index2本身取不到。
8.toLowerCase():将字符串全部转换为小写。
9.toUpperCase():将字符串全部转换为大写。
10.startsWith(String s):判断字符串是否以 s 开头。
11.endsWith(String s):判断字符串是否以 s 结尾。
12.replace(String s1,String s2):把字符串中的s1,全部替换为 s2。
13.splite(String s):以 s 来分割字符串。
String的扩展StringBuffer,StringBuilder
StringBuilder:可以动态的赋值。
1.append():在尾部追加。
2.delete(int start,int end):删除从下标start开始到下标end结束的连续的字符,但不包含end本身。
3.insert(int index,String s):在index下标位置上插入 s。
4.reverse():将字符串倒序。
装箱与拆箱
1.装箱:就是把基本类型转换为类类型。
2自动装箱:系统自动帮你完成转换。
3.拆箱:把类类型的对象转换为基本类型的值。
自动拆箱:系统自动帮你完成转换。
public class Deme1 {
public static void main(String[] args) {
int x=3; //基本类型
Integer a=new Integer("100"); //类类型
a=x; //自动装箱:直接把基本类型的值,赋值给一个类类型的对象 或
a=Integer.valueOf(x); //装箱:即基本类型转换为类类型
//拆箱
int y=x;
String s="123";
System.out.println(s+1);
int m=Integer.parseInt(s)+1;
System.out.println(m);}}
Integer类中的常用方法
1.parseInt(String s):将 s 转换为 int 类型。
2.toXXXString(int x):将 x 转换为XXX进制的字符串。
3.toString(int x,int r):将 x 转换为 r 进制的字符串。
4.valueOf(String s,int r):把 s 识别为 r 进制的字符串,并转换为 10 进制的整数。
public class Deme4 {
public static void main(String[] args) {
int x1=520;
String m1=Integer.toBinaryString(x1);//二六进制
System.out.println(x1+"="+m1);
String m2=Integer.toOctalString(x1);//八进制
System.out.println(x1+"="+m2);
String m3=Integer.toHexString(x1);//十六进制
System.out.println(x1+"="+m3);
String m4=Integer.toString(x1,7);//n进制
System.out.println(x1+"="+m4);
long x3=Integer.valueOf("520",8);
System.out.println(x3);
}
}
基本类型和类类型
1.byte和Byte
2.short和Short
3.int和Integer
4.long和Long
5.float和Float
6.double和Double
7.char和Character
8.boolean和Boolean
基本类型转换为String类型
1.基本类型的变量+"";
2.String.valueOf(基本类型);
String转换为基本类型
1.转 int:Integer.parseInt(String s);
2.转 double:Double.parseDouble(String s);
3.转 float:Float.parseFloat(String s);
String转字符数组
1.String 转char[]:对象.toCharArray();
2.char[] 转String:String s=new String(char[] x);
String转字节数组
1.String 转byte[]:对象.getBytes();
2.byte[] 转String:String s=new String(byte[] x);
二、Math类
1.Math.PI:圆周率,值为:3.141592653589793。保留15位小数
2.Math.E:自然对数的底数,值为:2.718281828459045。
3.Math.abs:求绝对值
4.Math.sqrt:开平方
5.random:返回[0,1) 之间的一个随机数
Random类
1.定义一个变量 x
2. x.nextInt():随机取值:-21亿~~21亿。
3. x.nextInt(参数):如:x.nextInt(100):0~~99。