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

装箱拆箱

封装类
所有的基本类型,都有对应的类类型
比如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中,字符串是一个类,所以

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

常见创建字符串手段:

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

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值