参考:https://how2j.cn/k/number-string/number-string-wrap/22.html?p=136471
一、字符
用数字或者单个字符表示
java中可以直接打印字符型数组,因为输出流System.out是PrintStream对象,PrintStream有多个重载的println方法,其中一个就是public void println(char[] x),它会直接调用这个方法来打印,因而可以打印出数组内容(没有中括号,是所有字符拼接起来的一个字符串),而不是地址。
- 常用方法
System.out.println(Character.isLetter('a'));//判断是否为字母
System.out.println(Character.isDigit('a')); //判断是否为数字
System.out.println(Character.isWhitespace(' ')); //是否是空白
System.out.println(Character.isUpperCase('a')); //是否是大写
System.out.println(Character.isLowerCase('a')); //是否是小写
System.out.println(Character.toUpperCase('a')); //转换为大写
System.out.println(Character.toLowerCase('A')); //转换为小写
String a2 = Character.toString('a'); //转换为字符串
// 打印字符数组
Scanner s = new Scanner(System.in);
String input = s.nextLine();
char[] ch1 = input.toCharArray(); // 字符串转字符数组
System.out.print(ch1);
char[] ch2 = {101,'2','9',12};
System.out.println(ch2); // e29 直接拼成一个字符串输出
二、字符串
1.字符串
字符串是一个类,不是基础数据类型,String被修饰为final,所以不能被继承;同时是个不可变对象
java中的字符串不能直接索引取值,需要使用str.charAt(index)取到对应索引的字符
- 声明
创建方式:字面值,String构造方法,通过+号拼接
String teemo = new String("提莫"); //创建了两个字符串对象
char[] cs = new char[]{'崔','斯','特'};
String hero = new String(cs);// 通过字符数组创建一个字符串对象
- 常用方法
charAt(int index) // 获取指定位置的字符
toCharArray() // 获取对应的字符数组
subString(start[,end]) //截取子字符串
split(String str) // 切割字符串
trim() // 去掉首尾空格
toLowerCase() //全部变成小写
toUpperCase() // 全部变成大写
indexOf(String str) // 字符或者子字符串首次出现的位置
lastIndexOf(String str) // 字符或者子字符串最后出现的位置
contains(String str) // 是否包含子字符串
replaceAll(String str1,String str2) // 替换所有的
replaceFirst(String str1,String str2) // 只替换第一个
//==用于判断是否是同一个字符串对象
String str1 = "the light";
String str2 = new String(str1);
System.out.println( str1 == str2); //false
String str3 = "the light";
System.out.println( str1 == str3); // true
str1.equals(str2) //进行字符串内容的比较,必须大小写一致
str1.equalsIgnoreCase(str2) // 忽略大小写判断内容是否一致
str1.startsWith(str2) //判断是否以str2开始
str1.endsWith(str2) //判断是否以str2结尾
2.StringBuffer
可变长的字符串,提供方法:append追加,delete 删除,insert 插入,reverse 反转,字符串拼接的效率极高
和String内部是一个字符数组一样,StringBuffer也维护了一个字符数组。 但是,这个字符数组,留有冗余长度
比如说new StringBuffer(“the”),其内部的字符数组的长度,是19,而不是3,这样调用插入和追加,在现成的数组的基础上就可以完成了。如果追加的长度超过了19,就会分配一个新的数组,长度比原来多一些,把原来的数据复制到新的数组中,看上去 数组长度就变长了
length: “the”的长度 3
capacity: 分配的总空间 19 ,19:字符串长度+16,不同的JDK数量是不一样的
String str1 = "let there ";
StringBuffer sb = new StringBuffer(str1); //根据str1创建一个StringBuffer对象
sb.append("be light"); //在最后追加
sb.delete(4, 10);//删除4-10之间的字符
sb.insert(4, "there ");//在4这个位置插入 there
sb.reverse(); //反转
System.out.println(sb.length()); //内容长度
System.out.println(sb.capacity());//总空间
3.格式化输出
使用printf或者format,%s 表示字符串;%d 表示数字;%n 表示换行
String sentenceFormat ="%s 在进行了连续 %d 次击杀后,获得了 %s 的称号%n";
//使用printf格式化输出
System.out.printf(sentenceFormat,name,kill,title);
System.out.format("%s 在进行了连续 %d 次击杀后,获得了 %s 的称号%n",name,kill,title);
int year = 2020;
System.out.format("%8d%n",year); //总长度是8,默认右对齐
System.out.format("%-8d%n",year); //总长度是8,左对齐
System.out.format("%08d%n",year); //总长度是8,不够补0
System.out.format("%,8d%n",year*10000); //千位分隔符
System.out.format("%.2f%n",Math.PI); //小数点位数
三、数字
1.封装类
所有的基本类型,都有对应的类类型 ,比如int对应的类是Integer
数字封装类有:Byte,Short,Integer,Long,Float,Double ,这些类都是抽象类Number的子类
public static void main(String[] args) {
int i = 5;
//基本类型转换成封装类型
Integer it = new Integer(i);
//自动转换就叫装箱
Integer it2 = i;
//封装类型转换成基本类型
int i2 = it.intValue();
//自动转换就叫拆箱
int i3 = it;
//int的最大值
System.out.println(Integer.MAX_VALUE);
//int的最小值
System.out.println(Integer.MIN_VALUE);
}
2.数字、字符串互转
// 1.数字转字符串
int i = 5;
String str = String.valueOf(i); //方法1:String.valueOf(i)
Integer it = i;
String str2 = it.toString(); //方法2:先转包装类,再调用toString方法
// 2.字符串转数字
float a = 3.14f;
String b = String.valueOf(a);
float c = Float.parseFloat(b); // Integer.parseInt(str)
3.计算
java.lang.Math提供了一些常用的数学运算方法,并且都是以静态方法的形式存在
public static void main(String[] args) {
float f1 = 5.4f;
float f2 = 5.5f;
//5.4四舍五入即5
System.out.println(Math.round(f1)); // 只能保留到整数
//5.5四舍五入即6
System.out.println(Math.round(f2));
float a = 1.637f;
System.out.printf("%.2f",a); // 这个会自动四舍五入
//得到一个0-1之间的随机浮点数(取不到1)
System.out.println(Math.random());
//得到一个0-10之间的随机整数 (取不到10)
System.out.println((int)( Math.random()*10));
//开方
System.out.println(Math.sqrt(9));
//次方(2的4次方)
System.out.println(Math.pow(2,4));
//π
System.out.println(Math.PI);
//自然常数
System.out.println(Math.E);
}