知识点汇总
字符串:
1、进行字符串的声明和创建
声明
1、String str="字符串"
2、String str=new String("字符串")
创建
字符串经以上两种方式声明的均无法改变
2、进行字符串的拼接
String str1="你好";
System.out.println("str1的值是:"+str1));
3、获取字符串的信息
下面均以字符串str1为例
1、获取字符串的长度:len=str1.length();
2、获取指定位置索引的字符串:char s=str1.charAt(索引); s为该索引处的字符串
3、查找字符串:str1.indexOf("字符串"),这个返回字符串第一次出现的索引。若字符串不存在,则返回-1
4、字符串操作
1、获取子字符串:
String str2=str1.substring(1(起始索引),3(终止索引)) 返回1处和2处的字符串,左闭右开
2、去除字符串前后的空格:String str2= str1.trim(); 返回一个处理后的字符串
3、去除所有(字符串中间的和两边的)空格 String str2=str1.replaceAll(“\\s”,""); # \\s匹配空格等空白殊字符
4、替换字符串 str1.replace("小明","小强"); 和 str1.replaceAll("小明","小强");
二者均返回一个替换后的字符串
replace和replaceAll方法均可以替换字符串,但不会改变原字符串
5、判断字符串的结尾是否有特定的字符串 boolean result=str1.endsWith(ending);
# result输出出来为true ending为特定的字符串
6、判断字符串的开头是否有特定的字符串 boolean result=str1.startsWith(starting) 同上
7、判断字符串是否相等
1、用“==”判断
在这里先讲一下==的作用:
首先是基本数据类型,==用来比较两个数据的数值是否相等
其次是引用数据类型,==用来比较两个数据的地址是否相等
字符串中,用String直接定义:
String str1="abc";
String str2="abc"; #此时计算机会去寻找前面是否有一样的字符串,如果有,则第二个字符串的创建就会用第一个字符串的地址。如果没有,则再创建一个内存去储存第二个字符串。
System.out.println(str1==str2); # true
用String new定义:
new String定义时,与上面不同。这个方法总会创建一个新的内存去储存字符串,因此用==时,这种方法定义的字符串总会false
String str1=new String("abc");
String str2=new String("abc");
System.out.println(str1==str2); # false
2、用equals判断字符串内容是否相等:
boolean result=str1.equals(str2) # true或false
8、忽略大小写判断字符串是否相等:boolean result=str1.equalsIgnoreCase(str2) # true或false
9、把字符串转换为大写:String upper=str1.toUpperCase()
10、把字符串转换为小写:String lower=str1.toLowerCase()
11、分割字符串
1、String[] arr=str1.split(",") ##这里以用逗号分割
2、String[] arr=str1.split(",",2) ##这里以逗号分割str1,并分成两部分
比如:
String str1="ABC,abc,uiq";
String[] arr=str1.split(",",2);
for(String part:arr) {
System.out.println(part);
}
输出:
ABC
abc,uiq
5、使用StringBuilder类
使用StringBuild类创建的字符串可以被修改,下面是一些常用的修改方法
1、在字符串后追加(在str1后面追加str2)
str1.append(str2)
2、修改指定索引处的字符(以sd为例)
sd.setCharAt(索引,'字符串') 注意 :字符串必须用单引号' '括起来,不然会报错
3、插入字符串
sd.insert(1,"a") #在索引1处插入字符串a
4、字符串的反序
sd.reverse()
5、删除子字符串
sd.delete(0,2) # 删除0到 2之前的字符串,左闭右开
6、格式化字符串
首先 创建一个Date的对象 Date dt=new Date()
然后就可以格式化输出啦!!
1、格式化输出年月日:String str=String.format("%tF",dt) #str为2023-12-18
2、格式化输出年:String year=String.format("%tY",dt) #2023
3、格式化输出月:String month=String.format("%tB",dt) #十二月
下面只写占位符,其他同上
3、格式化输出时:"%tH"
4、格式化输出分钟:"%tM"
5、格式化输出秒:"%tS"
6、格式化输出字符串:System.out.println(String.format("%s",str))
7、格式化输出整数:System.out.println(String.format("s1的数值是:%d",s1))
8、格式化输出浮点数(保留两位小数):System.out.println(String.format("s1的数值是:%.2f",s1))
9、格式化输出布尔:System.out.println(String.format("2<3的值是:%b",2<3))
10、格式化输出科学计数法:
System.out.println(String.format("12000000的科学计数法是:%e",12000000))
流程控制:
感觉这一章跟c语言的一样,这里就不详细写了。
但是我认为有一点需要注意:就是for循环有一点不太一样
比如
int[] arr= {1,2,3,4,5};
for(int i:arr){
System.out.println(i);}
这里的i可以看作一个因子(类比python),去依次替代数组中的每一个数字并输出。这是java和c for循环不太一样的地方.
数字处理类:
1、数字格式化
1、补全位数:
public static void main(String[] args) {
format("0000",123);
}
static void format(String pattern,double value) {
DecimalFormat df=new DecimalFormat(pattern);
String num=df.format(value);
System.out.println(pattern); ##0000
System.out.println(num); ##0123
}
2、输出金额
public static void main(String[] args) {
format("###,###.###$",12345226.431); ##只需修改这个即可,下面那个方法不用动
}
static void format(String pattern,double value) {
DecimalFormat df=new DecimalFormat(pattern);
String num=df.format(value);
System.out.println(pattern);
System.out.println(num);
}
3、表示千分号:
public static void main(String[] args) {
format("\u2030",0.078);
}
static void format(String pattern,double value) {
DecimalFormat df=new DecimalFormat(pattern);
String num=df.format(value);
System.out.println(pattern); ## ‰
System.out.println(num); ## ‰78
}
2、数学运算
三角函数(角度要用圆周率的倍数表示)、圆周率、对数函数(Math中只有以e为底和以10为底的log函数)、幂运算(sqrt、cbrt、pow等)、绝对值、两者的最大值
Math.max(5,4)
最小值min等价、取整(floor)、四舍五入(round)原理为:取不大于x+0.5的最大整数
3、随机数
创建一个0到1的随机数:
double a=Math.random();
创建一个0到100的随机数
int a=(int)(Math.random()*100);
大数字类
BigInteger的用法均在下面:
BigInteger n=new BigInteger("99999999");
System.out.println(n.add(new BigInteger("998")));
System.out.println(n.subtract(new BigInteger("998")));
System.out.println(n.multiply(new BigInteger("998")));
System.out.println(n.divide(new BigInteger("998")));
System.out.println(n.remainder(new BigInteger("998")));
System.out.println(n.pow(998));
System.out.println(n.equals(998));
System.out.println(n.max(new BigInteger("998")));
System.out.println(n.min(new BigInteger("998")));
System.out.println(n.gcd(new BigInteger("99899")));