fiveday_java 字符串、Arrays与Math工具类的学习
1、字符串
/*
程序中的所有的双引号字符串,都是String类的对象。
字符串的特点
1.字符串的内容永不可变
2.正是因为不可变,所以字符串是可以共享使用
3.字符串效果上相当于char[]字符数组,但是底层原理是byte[]字节数组。
创建字符串的3+1种方式
三种构造方法
public String(),
public String(char[] array),
public String(byte[] array),
一种直接创建
String str4="hello";
*/
public class String01 {
public static void main(String[] args) {
//使用空参构造
String str1=new String();
System.out.println("第一个:"+str1);//第一个:
//根据字符数组创建
char[] array={'a','b','c'};
String str2=new String(array);
System.out.println("第二个:"+str2);//第二个:abc
//根据字节数组
byte[] byteArray={97,98,99};
String str3=new String(byteArray);
System.out.println("第三个:"+str3);//第三个:abc
//直接创建
String str4="hello";
System.out.println(str4);//hello
}
}
2、字符串的常量池
字符串常量池,程序中直接写的双引号字符串,就在字符串常量池中
对于基本类型来说,==是比较值是否相等
对于引用类型来说,==是比较地址值是否相等,
若要进行内容的比较可以使用两种方法
1>public boolean equals(Object obj);参数可以是任意类型
a、 equals方法具有对称性,str1.equals(str2)与str2.equals(str1)是一样的
b、 但是当一个是常量,一个是变量时,
推荐:"常量".equals(变量)
不推荐:变量.equals(常量)//会出现空指针报错
2>、public boolean equalsIgnoreCase(String str)//不区分英文大小写
public static void main(String[] args) {
String str1="abc";
String str2="abc";
byte[] byteArray={97,98,99};
String str3=new String(byteArray);
System.out.println(str1==str2);//true
System.out.println(str1==str3);//false
System.out.println("======================");
System.out.println(str1.equals(str2));//true
System.out.println(str1.equals(str3));//true
System.out.println("======================");
String str4=null;
System.out.println("abc".equals(str4));//false
System.out.println(str4.equals("abc"));//NullPointerException报错 空指针异常
System.out.println("===================");
String str5="Java";
String str6="java";
System.out.println(str5.equalsIgnoreCase(str6));//true
}
3、字符串常用的获取方法
- public int length();//获取长度
- public String concat(String str);//连接字符串
- public char charAt(int index);//根据索引找字符
- public int indexof(String str);//在原字符串中找第一次出现字符串str的索引位置
public static void main(String[] args) {
//快捷键Alt+回车,自动生成变量
//public int length() 获取长度
int length = "EDASGRSEGRTSHT".length();
System.out.println("字符串的长度:"+length);//14
//拼接字符串
String str1="hello";
String str2="world";
String concat = str1.concat(str2);
System.out.println(concat);//helloworld
//获取索引指定位置的单个字符
char c = "hello".charAt(1);
System.out.println(c);//e
//获取字符串在原字符串第一次的索引位置
String str3="abcdsdsdgeg";
String str4="abcd";
int i = str3.indexOf(str4);
System.out.println(i);//0 "abcd"在字符串的第一位
System.out.println(str3.indexOf("kl"));//-1 代表没找到
}
4、字符串的截取
public String substring(int index)//[index,最后]
public String substring(int index,int index1)//[index,insex1-1]
System.out.println(str3.substring(5));//dsdgeg
System.out.println(str3.substring(2,4));//cd
5、字符串的转换
- public char[] toCharArray();//把字符串转换成数组
- public byte[] getBytes();//把字符串转换成字节数组
- public String replace(CharSequence oldString,CharSequence newString); //用新字符替换旧字符
public static void main(String[] args) {
String str1="asdff";
//把字符串转换成数组
char[] chars = str1.toCharArray();
System.out.println(chars[0]);//a
System.out.println(chars.length);//5
System.out.println("==================");
//把字符串转换成字节数组
byte[] bytes = str1.getBytes();
System.out.println(bytes[0]);//97
System.out.println(bytes.length);//5
//用新字符替换旧字符
String ff = str1.replace("ff", "**");
System.out.println(ff);//asd**
}
6、分割字符串
public String[] split(String regex),按照参数规则(正则表达式),将字符串切分成若干份
String str1="aaa,sss,ddd";
String[] array1 = str1.split(",");
for (String s : array1) {
System.out.print(s);//aaa sss ddd
}
String str2="aaa.ddd.sds";
String[] array2 = str2.split(".");
String[] array3 = str2.split("\\.");
for (String s : array2) {
System.out.println(s);//无返回值 原因split(正则表达式),”.“在正则表达式里有特殊含义故不可直接写
}
System.out.println("============");
for (String s1 : array3) {
System.out.print(s1+" ");//aaa ddd sds
}
7、static关键字
如果一个成员变量有个static修饰,那么它不在是一个对象的,而是属于类的,多个对象共用一份数据
static修饰成员方法,调用格式 类名.方法名,静态法方法不可以直接调用方法,必需创建对象。
8、静态代码块
public class 类名称{
static{
//内容
}
}
特点:当第一次用到本类的时候,静态代码块执行唯一的一次。静态内容总是优先于非静态,所以静态代码块先执行于构造方法。
用途:用来一次性的对静态成员变量进行赋值
9、Arrays工具类
java.util.Arrays是一个工具类,里面都是静态方法,用来实现数组常见的操作
public static String tostring(数组),将参数变成字符串(按照默认格式[元素1,元素2,元素3...])
public static void sort(数组),默认升序对数组元素排序
备注:
如果是排序数值,则按数字大小排序
如果是字符串,则按字母升序
如果是自定义类,那么这个自定义类需要有Comparable或Coparator接口支持
public static void main(String[] args) {
//tostring
int [] nums={1,2,3,4};
String s = Arrays.toString(nums);//[1, 2, 3, 4]
System.out.println(s);
//sort
int[] num={2,1,3,6,3,4};
Arrays.sort(num);
System.out.println(Arrays.toString(num));//[1, 2, 3, 3, 4, 6]
}
练习
//将一个随机字符串中的所有字符升序排列,并倒序输出
String str1="akdeh235435";
char[] strArray = str1.toCharArray();
Arrays.sort(strArray);
//快捷键 strArray.forr 倒叙
for (int i = strArray.length-1;i>=0; i--) {
System.out.print(strArray[i]+" ");//k h e d a 5 5 4 3 3 2
}
10、Math类
java.util.Math类是与数学运算相关的工具类,里面提供了大量的静态方法。
public static double abs(double num),获取绝对值
public static double ceil(double num),向上取整
public static double floor(double num),向下取整
public static long round(double num),四舍五入
Math.PI圆周率
public static void main(String[] args) {
System.out.println(Math.ceil(21.9));//22 向上取整
System.out.println(Math.abs(-0.9));//0.9
System.out.println(Math.floor(3.5));//3.0
System.out.println(Math.round(23.4));//23
}
浙公网安备 33010602011771号