Java 学习-Day3
String 类
字符串数据在 Java 编程中使用得非常频繁,但 Java 的基本数据类型中并没有字符串型,Java 单独提供了一个 String 类来对字符串数据进行创建和操作。
创建字符串
直接创建的字符串变量存储于公共池中,通过构造函数创建的字符串变量存储在堆上。
String 方法
获取字符串长度—— length() 方法
String str = "demoStr";
int l = str.length();
连接字符串—— concat() 方法
String str1 = "demo";
String str2 = str1.concat("Str");
更为常用的方式是直接用+运算
String str1 = "demo";
String str2 = str1 + "Str";
其他方法
SN(序号) | 方法描述 |
---|
1 | char charAt(int index) 返回指定索引处的 char 值。 | 2 | int compareTo(Object o) 把这个字符串和另一个对象比较。 | 3 | int compareTo(String anotherString) 按字典顺序比较两个字符串。 | 4 | int compareToIgnoreCase(String str) 按字典顺序比较两个字符串,不考虑大小写。 | 5 | String concat(String str) 将指定字符串连接到此字符串的结尾。 | 6 | boolean contentEquals(StringBuffer sb) 当且仅当字符串与指定的StringBuffer有相同顺序的字符时候返回真。 | 7 | [static String copyValueOf(char] data) 返回指定数组中表示该字符序列的 String。 | 8 | [static String copyValueOf(char] data, int offset, int count) 返回指定数组中表示该字符序列的 String。 | 9 | boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结束。 | 10 | boolean equals(Object anObject) 将此字符串与指定的对象比较。 | 11 | boolean equalsIgnoreCase(String anotherString) 将此 String 与另一个 String 比较,不考虑大小写。 | 12 | [byte] getBytes() 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。 | 13 | [byte] getBytes(String charsetName) 使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。 | 14 | [void getChars(int srcBegin, int srcEnd, char] dst, int dstBegin) 将字符从此字符串复制到目标字符数组。 | 15 | int hashCode() 返回此字符串的哈希码。 | 16 | int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。 | 17 | int indexOf(int ch, int fromIndex) 返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。 | 18 | int indexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引。 | 19 | int indexOf(String str, int fromIndex) 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。 | 20 | String intern() 返回字符串对象的规范化表示形式。 | 21 | int lastIndexOf(int ch) 返回指定字符在此字符串中最后一次出现处的索引。 | 22 | int lastIndexOf(int ch, int fromIndex) 返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。 | 23 | int lastIndexOf(String str) 返回指定子字符串在此字符串中最右边出现处的索引。 | 24 | int lastIndexOf(String str, int fromIndex) 返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。 | 25 | int length() 返回此字符串的长度。 | 26 | boolean matches(String regex) 告知此字符串是否匹配给定的正则表达式。 | 27 | boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) 测试两个字符串区域是否相等。 | 28 | boolean regionMatches(int toffset, String other, int ooffset, int len) 测试两个字符串区域是否相等。 | 29 | String replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。 | 30 | String replaceAll(String regex, String replacement) 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。 | 31 | String replaceFirst(String regex, String replacement) 使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。 | 32 | [String] split(String regex) 根据给定正则表达式的匹配拆分此字符串。 | 33 | [String] split(String regex, int limit) 根据匹配给定的正则表达式来拆分此字符串。 | 34 | boolean startsWith(String prefix) 测试此字符串是否以指定的前缀开始。 | 35 | boolean startsWith(String prefix, int toffset) 测试此字符串从指定索引开始的子字符串是否以指定前缀开始。 | 36 | CharSequence subSequence(int beginIndex, int endIndex) 返回一个新的字符序列,它是此序列的一个子序列。 | 37 | String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。 | 38 | String substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。 | 39 | [char] toCharArray() 将此字符串转换为一个新的字符数组。 | 40 | String toLowerCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为小写。 | 41 | String toLowerCase(Locale locale) 使用给定 Locale 的规则将此 String 中的所有字符都转换为小写。 | 42 | String toString() 返回此对象本身(它已经是一个字符串!)。 | 43 | String toUpperCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为大写。 | 44 | String toUpperCase(Locale locale) 使用给定 Locale 的规则将此 String 中的所有字符都转换为大写。 | 45 | String trim() 返回字符串的副本,忽略前导空白和尾部空白。 | 46 | static String valueOf(primitive data type x) 返回给定data type类型x参数的字符串表示形式。 | 47 | contains(CharSequence chars) 判断是否包含指定的字符系列。 | 48 | isEmpty() 判断字符串是否为空。 |
基本数据类型和 String 类型之间的转换
基本数据类型转 String 类型
直接将基本数据类型 + “”
int i = 233;
String str = i + "";
String 类型转基本数据类型
通过基本类型的包装类调用parse…方法来完成
Byte by = Byte.parseByte("23");
Short s = Short.parseShort("233");
int i = Integer.parseInt("2333");
Long l = Long.parseLong("23333");
Boolean b = Boolean.parseBoolean("true");
Float f = Float.parseFloat("233.3");
Double d = Double.parseDouble("233.33");
运算符
介绍
运算符在编程语言中用于表示数据之间的运算、比较和赋值等操作。
算术运算符
定义
对数值类型的变量进行运算时使用的运算符即算术运算符。
Java 中提供的算术运算符(A = 10, B = 20)
操作符 | 描述 | 例子 |
---|
+ | 加法 - 相加运算符两侧的值;正号;字符串连接 | A + B 等于 30 | - | 减法 - 左操作数减去右操作数;负号 | A – B 等于 -10 | * | 乘法 - 相乘操作符两侧的值 | A * B等于200 | / | 除法 - 左操作数除以右操作数;左右都为整数时整除 | B / A等于2 | % | 取余 - 左操作数除以右操作数的余数 | B%A等于0 | ++ | 自增: 操作数的值增加1 | B++ 或 ++B 等于 21 | – | 自减: 操作数的值减少1 | B-- 或 --B 等于 19 |
注意事项
关系运算符
定义
关系运算符的运算结果都是 Boolean 类型,即只能为 true 或 false ,常用于if语句或循环语句中。
Java 中提供的关系运算符(A = 10, B = 20)
运算符 | 描述 | 例子 |
---|
== | 检查如果两个操作数的值是否相等,如果相等则条件为真。 | (A == B)为假 | != | 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 | (A != B) 为真 | > | 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 | (A> B)为假 | < | 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 | (A <B)为真 | >= | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 | (A> = B)为假 | <= | 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 | (A <= B)为真 | instanceof | 检查是否为类的对象。 | “string” instanceof String 为真 |
逻辑运算符
定义
用于连接多个关系表达式,对 Boolean 类型的值进行运算,最终的运算结果也是一个 Boolean 值。
Java 中提供的逻辑运算符
操作符 | 描述 | 例子 |
---|
&& | 短路与。当且仅当两个操作数都为真,条件才为真。 | (A && B)为假 | & | 逻辑与。当且仅当两个操作数都为真,条件才为真。 | (A & B) 为假 | | | | 短路或。如果任何两个操作数任何一个为真,条件为真。 | (A | | B) 为真 | | | 短路或。如果任何两个操作数任何一个为真,条件为真。 | (A | B) 为真 | ! | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为 true ,则逻辑非运算符将得到 false 。 | !(A && B)为真 |
短路与&&、逻辑与&的区别
赋值运算符
定义
将某个表达式运算的结果赋予指定变量的运算符。
Java 中提供的赋值运算符
操作符 | 描述 | 例子 |
---|
= | 简单的赋值运算符,将右操作数的值赋给左侧操作数 | C = A + B将把A + B得到的值赋给C | + = | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 | C + = A等价于C = C + A | - = | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 | C - = A等价于C = C - A | * = | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 | C * = A等价于C = C * A | / = | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 | C / = A,C 与 A 同类型时等价于 C = C / A | (%)= | 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 | C%= A等价于C = C%A | << = | 左移位赋值运算符 | C << = 2等价于C = C << 2 | >> = | 右移位赋值运算符 | C >> = 2等价于C = C >> 2 | &= | 按位与赋值运算符 | C&= 2等价于C = C&2 | ^ = | 按位异或赋值操作符 | C ^ = 2等价于C = C ^ 2 | | = | 按位或赋值操作符 | C | = 2等价于C = C | 2 |
位运算符
定义
作用在运算对象的二进制位上,按位运算的运算符。
Java 中提供的位运算符(A = 0011 1100, B = 0000 1101)
操作符 | 描述 | 例子 |
---|
& | 如果相对应位都是1,则结果为1,否则为0 | (A&B),得到12,即0000 1100 | | | 如果相对应位都是 0,则结果为 0,否则为 1 | (A | B)得到61,即 0011 1101 | ^ | 如果相对应位值相同,则结果为0,否则为1 | (A ^ B)得到49,即 0011 0001 | ? | 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 | (?A)得到-61,即1100 0011 | << | 按位左移运算符。左操作数按位左移右操作数指定的位数。 | A << 2得到240,即 1111 0000 | >> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 | A >> 2得到15即 1111 | >>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 | A>>>2得到15即0000 1111 |
三元运算符
定义
该运算符有三个操作数,根据其中布尔表达式的值来在剩余两个操作数中取一作为运算结果,又叫做条件运算符。
样例
int a = 2;
int b = 4;
int x = (a > b) ? a : b;
Java 运算符的优先级
Java 运算符的优先级,从上至下依次递减
类别 | 操作符 | 关联性 |
---|
后缀 | () [] . (点操作符) | 左到右 | 一元 | expr++ expr– | 从左到右 | 一元 | ++expr --expr + - ~ ! | 从右到左 | 乘性 | * /% | 左到右 | 加性 | + - | 左到右 | 移位 | >> >>> << | 左到右 | 关系 | > >= < <= | 左到右 | 相等 | == != | 左到右 | 按位与 | & | 左到右 | 按位异或 | ^ | 左到右 | 按位或 | | | 左到右 | 逻辑与 | && | 左到右 | 逻辑或 | | | | 左到右 | 条件 | ?: | 从右到左 | 赋值 | = + = - = * = / =%= >> = << =&= ^ = | = | 从右到左 | 逗号 | , | 左到右 |
思维导图

|