数字与字符串系列简单回顾

it2025-11-15  3

装箱拆箱

封装类 所有的基本类型,都有对应的类类型 比如int对应的类是Integer 这种类就叫做封装类

Number类 数字封装类有 Byte,Short,Integer,Long,Float,Double 这些类都是抽象类Number的子类

自动装箱 不需要调用构造方法,通过=符号自动把 基本类型 转换为 类类型 就叫装箱

自动拆箱 不需要调用Integer的intValue方法,通过=就自动转换成int类型,就叫拆箱

int的最大值,最小值 int的最大值可以通过其对应的封装类Integer.MAX_VALUE获取

字符串转换

数字转字符串 方法1: 使用String类的静态方法valueOf 方法2: 先把基本类型装箱为对象,然后调用对象的toString

//方法1 String str = String.valueOf(i); //方法2 Integer it = i; String str2 = it.toString();

字符串转数字 调用Integer的静态方法parseInt

int i= Integer.parseInt(str); int j = Integer.valueOf("1024").intValue(); //parseInt得到的是基础数据类型int,valueof得到的是装箱数据类型Integer

数学方法

四舍五入, 随机数,开方,次方,π,自然常数

//Math.round()函数返回一个数字四舍五入后最接近的整数 //如果参数的小数部分大于0.5,四舍五入到相邻的绝对值更大的整数 x=Math.round(-2019.51); //-2020 //如果参数的小数部分小于0.5,四舍五入到相邻的绝对值更小的整数 x=Math.round(2019.49) ; //2019 //如果参数的小数部分等于0.5,四舍五入到相邻的在正无穷(+∞)方向上的整数。 x=Math.round(2019.5); //2020 x=Math.round(-2019.5); //-2019 //得到一个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); //大于等于 x,并且与它最接近的整数。 System.out.println(Math.ceil(x) ); //小于等于 x,且与 x 最接近的整数。 System.out.println(Math.floor(x));

格式化输出

如果不使用格式化输出,就需要进行字符串连接,如果变量比较多,拼接就会显得繁琐 使用格式化输出,就可以简洁明了

%s 表示字符串 %d 表示数字 %n 表示换行

printf和format printf和format能够达到一模一样的效果

String sentenceFormat ="%s 在进行了连续 %d 次击杀后,获得了 %s 的称号%n"; //使用printf格式化输出 System.out.printf(sentenceFormat,name,kill,title); //使用format格式化输出 System.out.format(sentenceFormat,name,kill,title);

换行符 换行符就是另起一行 — ‘\n’ 换行(newline) 回车符就是回到一行的开头 — ‘\r’ 回车(return) 在eclipse里敲一个回车,实际上是回车换行符 Java是跨平台的编程语言,同样的代码,可以在不同的平台使用,比如Windows,Linux,Mac 然而在不同的操作系统,换行符是不一样的 (1)在DOS和Windows中,每行结尾是 “\r\n”; (2)Linux系统里,每行结尾只有 “\n”; (3)Mac系统里,每行结尾是只有 “\r”。 为了使得同一个java程序的换行符在所有的操作系统中都有一样的表现,使用%n,就可以做到平台无关的换行

总长度,左对齐,补0,千位分隔符,小数点位数,本地化表达

int year = 2020; //总长度,左对齐,补0,千位分隔符,小数点位数,本地化表达 //直接打印数字 System.out.format("%d%n",year); //总长度是8,默认右对齐 System.out.format("%8d%n",year); //总长度是8,左对齐 System.out.format("%-8d%n",year); //总长度是8,不够补0 System.out.format("%08d%n",year); //千位分隔符 System.out.format("%,8d%n",year*10000); //小数点位数 System.out.format("%.2f%n",Math.PI); //不同国家的千位分隔符 System.out.format(Locale.FRANCE,"%,.2f%n",Math.PI*10000); System.out.format(Locale.US,"%,.2f%n",Math.PI*10000); System.out.format(Locale.UK,"%,.2f%n",Math.PI*10000);

字符

Character

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 a = 'a'; //不能够直接把一个字符转换成字符串 String a2 = Character.toString('a'); //转换为字符串

转义

System.out.println("使用空格无法达到对齐的效果"); System.out.println("abc def"); System.out.println("ab def"); System.out.println("a def"); System.out.println("使用\\t制表符可以达到对齐的效果"); System.out.println("abc\tdef"); System.out.println("ab\tdef"); System.out.println("a\tdef"); System.out.println("一个\\t制表符长度是8"); System.out.println("12345678def"); System.out.println("换行符 \\n"); System.out.println("abc\ndef"); System.out.println("单引号 \\'"); System.out.println("abc\'def"); System.out.println("双引号 \\\""); System.out.println("abc\"def"); System.out.println("反斜杠本身 \\"); System.out.println("abc\\def");

字符串

创建字符串 字符串即字符的组合,在Java中,字符串是一个类,所以

我们见到的字符串都是对象

常见创建字符串手段:

每当有一个字面值出现的时候,虚拟机就会创建一个字符串调用String的构造方法创建一个字符串对象通过+加号进行字符串拼接也会创建新的字符串对象

final和immutable

String 被修饰为final,所以是不能被继承的 immutable 是指不可改变的 比如创建了一个字符串对象 String garen =“盖伦”; 不可改变的具体含义是指: 不能增加长度 不能减少长度 不能插入字符 不能删除字符 不能修改字符 一旦创建好这个字符串,里面的内容 永远 不能改变

String 的表现就像是一个常量

字符串格式化 如果不使用字符串格式化,就需要进行字符串连接,如果变量比较多,拼接就会显得繁琐 使用字符串格式化,就可以简洁明了 更多的格式化规则,参考格式化输出

//格式化字符串 //%s表示字符串,%d表示数字,%n表示换行 String sentenceFormat ="%s 在进行了连续 %d 次击杀后,获得了 %s 的称号%n"; String sentence2 = String.format(sentenceFormat, name,kill,title); System.out.println(sentence2);

字符串长度 length()方法返回当前字符串的长度 可以有长度为0的字符串,即空字符串

操纵字符串 charAt 获取字符 (参数从0开始) toCharArray 获取对应的字符数组 (String.toCharArray) subString 截取子字符串

//截取从第3个开始的字符串 (基0) String subString1 = sentence.substring(3); System.out.println(subString1); //截取从第3个开始的字符串 (基0) //到5-1的位置的字符串 //左闭右开 String subString2 = sentence.substring(3,5);

split 分隔 (参数是分割符) trim 去掉首尾空格

toLowerCase toUpperCase 大小写

indexOf lastIndexOf contains 定位

System.out.println(sentence.indexOf('8')); //字符第一次出现的位置 System.out.println(sentence.indexOf("超神")); //字符串第一次出现的位置 System.out.println(sentence.lastIndexOf("了")); //字符串最后出现的位置 System.out.println(sentence.indexOf(',',5)); //从位置5开始,出现的第一次,的位置 System.out.println(sentence.contains("击杀")); //是否包含字符串"击杀"

replaceAll replaceFirst 替换

String temp = sentence.replaceAll("击杀", "被击杀"); //替换所有的 temp = sentence.replaceFirst(",","");//只替换第一个

字符串的比较

是否以子字符串开始或者结束 startsWith //以…开始 endsWith //以…结束

StringBuffer

追加 删除 插入 反转 append追加 delete 删除 insert 插入 reverse 反转

长度 容量 为什么StringBuffer可以变长? 和String内部是一个字符数组一样,StringBuffer也维护了一个字符数组。 但是,这个字符数组,留有冗余长度 比如说new StringBuffer(“the”),其内部的字符数组的长度,是19,而不是3,这样调用插入和追加,在现成的数组的基础上就可以完成了。 如果追加的长度超过了19,就会分配一个新的数组,长度比原来多一些,把原来的数据复制到新的数组中,看上去 数组长度就变长了 参考MyStringBuffer length: “the”的长度 3 capacity: 分配的总空间 19

String,StringBuffer与StringBuilder的区别 String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全)

最新回复(0)