写在开头
本系列内容主要涵盖我在深入学习Java过程中对一些知识点的深入理解和巩固。如果内容表达不准确或存在谬误,欢迎在评论区或私信中进行补充或指正~
目录
Scanner类的next()和nextLine()方法区别?
Scanner类的hasNext单词开头的方法,诸如hasNextLine()、hasNextInt()等方法
本篇内容旨在重新学习和加深印象关于Java基础类的内容。为便于记忆,本文内容稍有简化。
Java基础类
String如何转换为 byte 数组
在实际工作中,网络上的数据传输就是使用二进制字节数据。因此字符串和字节数组之间的相互转换也很常用。
String <=> Byte
public class StringMethod4 {
public static void main(String[] args) {
String str2 = "我喜欢Java";
System.out.println("将字符串转换为byte数组:");
// 将字符串转换为字节数组
byte[] ascii = str2.getBytes();
// 遍历字节数组,打印每个元素
for (byte aByte : ascii) {
System.out.print(aByte + "\t");
// Byte 转换为 String
// 此处的ascii为上面通过字符串转换的字节数组
String s = new String(ascii);
}
}
}
//输出结果:
//将字符串转换为byte数组:
//-26 -120 -111 -27 -106 -100 -26 -84 -94 74 97 118 97
字符串比较?.equals() & == ?
public class StringMethod6 { public static void main(String[] args) { // 用两种方法创建三个内容相同的字符串 String str1 = "hello"; String str2 = "hello"; String str3 = new String("hello"); System.out.println("使用equals()方法比较str1和str2的结果为:" + str1.equals(str2)); System.out.println("使用==运算符比较str1和str2的结果为:" + (str1 == str2)); System.out.println("使用==运算符比较str1和str2的结果为:" + (str1 == str2)); System.out.println("使用==运算符比较str1和str3的结果为:" + (str1 == str3)); } } //输出结果: //使用equals()方法比较str1和str2的结果为:true //使用==运算符比较str1和str2的结果为:true //使用equals()方法比较str1和str3的结果为:true //使用==运算符比较str1和str3的结果为:false
- str1,str2和str3的内容都是hello,使用equals()是比较内容,其结果总是为true
- 而 ==运算符比较的是两个变量的地址
常量与对象在内存中的创建位置?
- 变量名称 ==> 栈
- 常量 ==> 常量池
- new对象 ==> 堆
StringBuilder => String的自动转换?
Java 编译器在编译和运行期间会自动将字符串连接操作转换为 StringBuilder 操作或者数组复制,间接地优化了由于 String 的不可变性引发的性能问题。
String str = "Hello" + " " + "World";
StringBuilder的初始容量?
StringBuilder() 构造一个空字符串生成器,初始容量为 16 个字符
StringBuffer 与StringBuilder?
- StringBuffer 是线程安全的可变字符序列;
- StringBuffer 执行效率的下降
- 通过对关键方法进行同步(
synchronized
)来实现线程安全
Scanner类的next()和nextLine()方法区别?
-
next()方法
- 只有扫描到有效字符后才会结束输入;
- 会自动去掉空白(例如回车、空格等),不能得到带有空格的字符串
-
nextLine()方法
- 可以直接使用回车结束输入
- => 当获取完字符串希望用同一对象获取int等数据时 => 可用该方法吞 “换行符”
- 可以得到空白和带有空格的字符串
- 可以直接使用回车结束输入
Scanner类的hasNext单词开头的方法,诸如hasNextLine()、hasNextInt()等方法
返回布尔类型。判断下一行输入是否为对应类型。
int age;
if (scanner.hasNextInt()) {
age = scanner.nextInt();
} else {
System.out.println("不是int类型");
}
float height;
if (scanner.hasNextFloat()) {
height = scanner.nextFloat();
} else {
System.out.println("不是float类型");
}