使用record值类型声明使用
rercord extends java.lang.Record 类
public record User(int id,String name){
}
String运行结果的比较
String s1 = "ok";
String s2 = "ok";
System.out.println(s1 == s2);
String b1 = new String("ok");
String b2 = new String("ok");
System.out.println(b1 == b2);
System.out.println(b1.equals(b2));
//字符数
System.out.println("hello中国".length());
//字节数 utf-8 一个占用三个字节
System.out.println("hello中国".getBytes().length);
System.out.println(b1.concat(b2));
运行结果如下
直接声明的话指定的是是地址,当new时尽管生成的是相同的字符串,但是地址不相同,所以==判断时时false
编写程序输出最大值
public int max1(int... a) {
Arrays.sort(a);
return a.length == 0 ? 0 : a[a.length - 1];
}
在java语言,String 是固定长度
utf-8 编码下汉字一个占用3个字节。
实现字符逆序
public String ni(String a) {
int b = a.length();
//String[] c2 = a.split("", b);
char[] c2 = a.toCharArray();
String outcome = "";
for (int i = b - 1; i >= 0; i--) {
//outcome += c2[i];
outcome = outcome.concat(String.valueOf(c2[i]));
}
return outcome;
}
判断字符出现次数或字符串出现的次数
public int frequency(String text, String fre) {
char[] at1 = text.toCharArray();
char[] af1 = fre.toCharArray();
int sum = 0;
for (int i = 0; i < at1.length; i++) {
boolean a2 = false;
int a1 = 0;
if (at1[i] == af1[0]) {
if (i + af1.length <= at1.length) {
for (int j = 0; j < af1.length; j++) {
if (at1[i + j] == af1[j]) {
a1++;
}
if (a1 == af1.length) {
a2 = true;
break;
}
}
}
}
if (a2) {
sum++;
}
}
return sum;
}
关于面向对象的一些总结
继承 extends final类不允许被继承,没有子类。
super 类的你父类,存在重写的情况下会使用到
在子类的构造方法第一行也会使用super();
抽象类 abstract class C{}
接口 interface 使用的是接口的实现类,如果掊只有一个抽象方法,可以使用lambda表达来使用
接口 = 常量 + 抽象方法… + static实现方法… + default实现方法…
接口可以多继承接口