1. Java概述
- Java SE 标准版、Java EE 企业版、 Java ME 嵌入式开发。
- JVM 叫 Java 虚拟机,它也是整个 Java 技术的核心。Java 语言的跨平台就多亏了 JVM。
- JDK 叫 Java 开发工具包,没有 JDK 就没有办法进行 Java 程序的开发。
- JRE 叫 Java 运行环境,如果我们需要运行一个 Java 程序,就得安装 JRE。
2. String
字符串的比较
- equals() 方法,该方法的作用是判断两个字符串对象的内容是否相同。如果相同则返回 true,否则返回 false。
- equalsIgnoreCase() 方法,其用法与 equals() 一致,不过它会忽视大小写。
public class Practice {
public static void main(String[] args) {
String a = "abcdefg";
String b = new String("abcdefg");
String c = "Abcdefg";
System.out.println("对比字符串a和b:" + a.equals(b));
System.out.println("对比字符串a和c:" + a.equals(c));
System.out.println("对比字符串a和c:" + a.equalsIgnoreCase(c));
}
}
对比结果
对比字符串a和b:true
对比字符串a和c:false
对比字符串a和c:true
- 使用 "==" 比较的是两个对象在内存中存储的地址是否一样
String a = "abcdefg";
String b = new String("abcdefg");
String d = "abcdefg";
boolean e = (a == d);
boolean e1 = (a == b);
System.out.println(e);
System.out.println(e1);
运行结果
true
false
而 b 使用 new 关键字申请新的内存,所以内存地址和 a 的地址不一样,所以获得的值是 false。
字符串的连接
- 使用 +
- 使用 String 类的 concat() 方法。
public class Practice {
public static void main(String[] args) {
String a = "abc";
String b = new String("def");
String c = a+b;
String d = a.concat(b);
System.out.println("c:"+c);
System.out.println("d:"+d);
}
}
运行结果
c:abcdef
d:abcdef
charAt()方法
charAt() 方法的作用是按照索引值(规定字符串中第一个字符的索引值是 0,第二个字符的索引值是 1,依次类推),获得字符串中的指定字符。
public class Practice {
public static void main(String[] args) {
String a = "abcdef";
System.out.println(a.charAt(2));
}
}
运行结果
c
字符串常用提取方法
-
indexOf(char ch) : 搜索字符 ch 第一次出现的索引
-
indexOf(String value) : 搜索字符串 value 第一次出现的索引
-
lastIndexOf(char ch) : 搜索字符 ch 最后一次出现的索引
-
lastIndexOf(String value) : 搜索字符串 value 最后一次出现的索引
-
substring(int index) : 提取从位置索引开始到结束的字符串
-
substring(int beginindex, int endindex) : 提取 beginindex 和 endindex 之间的字符串部分(不包括endindex)
-
trim() : 返回一个前后不含任何空格的调用字符串的副本
public class Practice {
public static void main(String[] args) {
String a = " abcdefabcde ";
System.out.println(a.indexOf('c'));
System.out.println(a.indexOf("de"));
System.out.println(a.lastIndexOf('a'));
System.out.println(a.lastIndexOf("ab"));
System.out.println(a.substring(7));
System.out.println(a.substring(0, 6));
System.out.println(a);
System.out.println(a.trim());
}
}
运行结果
4
5
8
8
fabcde
abcd
abcdefabcde
abcdefabcde
StringBuilder
String 是无法被修改的,对 String 的修改,其实是新建了一个 String 对象。如果需要修改字符串的内容,可以使用 StringBuilder。它相当于一个存储字符的容器。初始化格式有以下三种:
- 构造一个不包含任何字符且初始容量为 16 的 StringBuilder
- 构造一个不包含任何字符且容量为 cap 的 StringBuilder
- 构造一个 StringBuilder,内容初始化为 str
StringBuilder s1 = new StringBuilder();
StringBuilder s2 = new StringBuilder(5);
StringBuilder s3 = new StringBuilder("java");
public class Practice {
public static void main(String[] args) {
StringBuilder s1 = new StringBuilder();
s1.append("java");//append相当于 + ;
StringBuilder s2 = new StringBuilder(5);
StringBuilder s3 = new StringBuilder("java");
System.out.println("s1:" + s1.toString() + "\tcap:" + s1.capacity());//capacity:字符容量,StringBuilder初始容量为16 ;
System.out.println("s2:" + s2.toString() + "\tcap:" + s2.capacity());//\t是补全当前字符串长度到8的整数倍,最少1个最多8个空格
System.out.println("s3:" + s3.toString() + "\tcap:" + s3.capacity());
}
}
运行结果
s1:java cap:16
s2: cap:5
s3:java cap:20
StringBuilder 常用方法
- deleteCharAt(int index) : 删除 StringBuilder 中指定位置的 char
- indexOf() : 返回子字符串首次出现在该字符串中的索引
- capacity() : 返回当前容量
- charAt(int index) : 返回序列中指定索引的 char 值
- toString() : 返回序列数据的 string 格式
public class Practice {
public static void main(String[] args) {
StringBuilder s1 = new StringBuilder("java");
System.out.println(s1.substring(0, 4));
System.out.println(s1.deleteCharAt(0));
System.out.println(s1.indexOf("a"));
System.out.println(s1.capacity());
System.out.println(s1.charAt(2));
System.out.println(s1.toString());
}
}
运行结果
java
ava
0
20
a
ava