Java Number类, Character类,String类
Java Number类
通常,当要在Java编程中使用数字时,可以使用原始数据类型,如:byte,int,long,double等。
示例 int i = 5000; float gpa = 13.65; double mask = 0xaf;
但是,在开发过程中,我们遇到的是需要使用对象而不是原始数据类型的情况。要实现这一点,可使用Java提供的包装类。
所有包装类(如:Integer,Long,Byte,Double,Float,Short)都是抽象类Number的子类。

包装类的对象包含或包装其各自的基本数据类型。将原始数据类型转换为对象称为装箱,编译器会对此进行处理。 因此,在使用包装器类时,只需将原始数据类型的值传递给包装类的构造函数就可以对它进行对应的操作。
并且包装对象将转换回原始数据类型,并且此过程称为拆箱。 Number类是java.lang包的一部分。
以下是装箱和拆箱的示例 -
public class Test { public static void main(String args[]) { Integer x = 5; // 装箱:将 int 添加到 Integer 对象 x = x + 1000; // 拆箱:将Integer 对象转为 int System.out.println(x); } }
执行上面示例代码,得到以下结果:
1005
当x赋予整数值时,编译器将整数装箱,因为x是整数对象。 之后,x又被拆箱,以便它们可以作为整数执行加法运算。
Number类的方法
以下是Number类的所有子类实现方法的列表 -
| 编号 | 方法 | 描述 |
|---|---|---|
| 1 | xxxValue()方法 | 将此Number对象的值转换为xxx数据类型并返回它。 |
| 2 | compareTo()方法 | 将此Number对象与参数进行比较。 |
| 3 | equals()方法 | 确定此Number对象是否等于参数。 |
| 4 | valueOf()方法 | 返回包含指定原始值的Integer对象。 |
| 5 | toString()方法 | 返回表示指定int或Integer值的String对象。 |
| 6 | parseInt()方法 | 返回某个String的原始数据类型值。 |
| 7 | abs()方法 | 返回参数的绝对值。 |
| 8 | ceil()方法 | 返回大于或等于参数的最小整数,结果整数为double类型。 |
| 9 | floor()方法 | 返回小于或等于参数的最大整数,结果整数为double类型。 |
| 10 | rint()方法 | 返回与参数值最接近的整数,结果整数为double类型。 |
| 11 | round()方法 | 返回最接近long或int值,由方法返回类型指示参数的返回类型。 |
| 12 | min()方法 | 返回两个参数中最小的那一个。 |
| 13 | max()方法 | 返回两个参数中最大的那一个。 |
| 14 | exp()方法 | 返回 e 的 x 次幂。e 代表自然对数的底数,其值近似为 2.71828。 |
| 15 | log()方法 | 返回参数的自然对数。 |
| 16 | pow()方法 | 返回第一个参数的第二个参数的指数幂(乘方)值。 |
| 17 | sqrt()方法 | 返回参数的平方根。 |
| 18 | sin()方法 | 返回指定double值的正弦值。 |
| 19 | cos()方法 | 返回指定double值的余弦值。 |
| 20 | tan()方法 | 返回指定double值的正切值。 |
| 21 | asin()方法 | 返回指定double值的反正弦值。 |
| 22 | acos()方法 | 返回指定double值的反余弦值。 |
| 23 | atan()方法 | 返回指定double值的反正切值。 |
| 24 | atan2()方法 | 将直角坐标(x,y)转换为极坐标(r,theta)并返回theta。 |
| 25 | toDegrees()方法 | 将参数转换为度数。 |
| 26 | toRadians()方法 | 将参数转换为弧度。 |
| 27 | random()方法 | 返回一个随机数。 |
Java Character类
通常,当处理字符时,使用原始数据类型char。
示例 char ch = 'a'; // Unicode的大写字符 char uniChar = '\u039A'; // 字符数组 char[] charArray ={ 'a', 'b', 'c', 'd', 'e' };
但是在开发过程中,经常遇到的是需要使用对象而不是原始数据类型的情况。 为了实现这一点,Java为原始数据类型char提供了包装类Character。
Character类提供了许多用于操作字符的有用类(即静态)方法。 可以使用Character构造函数创建Character对象,例如 -
Character ch = new Character('a');
在某些情况下,Java编译器还会创建一个Character对象。 例如,如果将原始字符传递给需要对象的方法,则编译器会自动将char转换为Character。此功能称为自动装箱或拆箱。
示例 // 这里是原始的char类型值:'a' // 它被装入`Character`对象ch Character ch = 'a'; // 这里原始char值'x',装箱用于方法test, // 拆箱到char类型值:'c' char c = test('x');
1. 转义序列
以反斜杠(\)开头的字符是转义序列,对编译器具有特殊含义。
在本教程中System.out.println()语句中经常使用换行符(\n),以便在打印字符串后前进到下一行。
下表中列出了Java转义序列 -
| 编号 | 转义序列 | 描述 |
|---|---|---|
| 1 | \t |
表示在文本中插入一个制表符。 |
| 2 | \b |
表示在文本中插入退格符。 |
| 3 | \n |
表示在文本中插入换行符。 |
| 4 | \r |
表示在文本中插入回车符。 |
| 5 | \f |
表示在文本中插入换页符。 |
| 6 | \ ' |
表示在文本中插入单引号字符。 |
| 7 | \" |
表示在文本中插入双引号字符。 |
| 8 | \\ |
表示在文本中插入反斜杠字符。 |
当在print语句中遇到转义序列时,编译器会相应地解释它。
示例
如果要在引号内加引号,则必须在内部引号上使用转义序列\" -
public class Test { public static void main(String args[]) { System.out.println("She said \"Hello!\" to me."); } }
执行上面示例代码,得到以下结果:
She said "Hello!" to me.
Character方法
以下是Character类的所有子类实现的方法列表 -
| 编号 | 方法 | 描述 |
|---|---|---|
| 1 | isLetter()方法 | 确定指定的char值是否为字母。 |
| 2 | isDigit()方法 | 确定指定的char值是否为数字。 |
| 3 | isWhitespace()方法 | 确定指定的char值是否为空格。 |
| 4 | isUpperCase()方法 | 确定指定的char值是否为大写字母。 |
| 5 | isLowerCase()方法 | 确定指定的char值是否为小写字母。 |
| 6 | toUpperCase()方法 | 返回指定char值的大写形式。 |
| 7 | toLowerCase()方法 | 返回指定char值的小写形式。 |
| 8 | toString()方法 | 返回表示指定字符值的String对象,即一个字符的字符串。 |
有关方法的完整列表,请参阅java.lang.Character API规范。
字符串在Java编程中广泛使用,字符串就是一系列字符(由一个个的字符组成)。 在Java编程语言中,字符串被视为对象。
Java平台提供String类来创建和操作字符串。
1. 创建字符串
创建字符串的最直接方法是 -
String str = "Hello world!";
每当它在代码中遇到字符串文字时,编译器就会创建一个String对象,在本例中str对象的值为Hello world!。
与其他对象一样,可以使用new关键字和构造函数来创建String对象。String类有11个构造函数,方便使用不同的源(例如:字符数组)提供字符串的初始值。
示例
public class StringDemo { public static void main(String args[]) { char[] helloArray = { 'Y', 'i', 'i', 'b', 'a', 'i' }; String helloString = new String(helloArray); System.out.println( helloString ); } }
执行上面示例代码,得到下结果:
Yiibai
注 -
String类是不可变的,因此一旦创建,就无法更改String对象。 如果想要对字符串进行大量修改,则应使用StringBuffer和StringBuilder。
2. 字符串长度
用于获取对象信息的方法称为访问器方法。 可以与字符串一起使用来获取字符串长度的一个访问器方法是length()方法,它返回字符串对象中包含的字符数。
以下程序是String类的length()方法的示例。
public class StringDemo { public static void main(String args[]) { String greeting = "Hi,Welcome to Yiibai.com"; int len = greeting.length(); System.out.println( greeting+" 字符串的长度是: " + len ); } }
执行上面示例代码,得到下结果:
Hi,Welcome to Yiibai.com 字符串的长度是: 24
3. 连接字符串
String类包含一个用于连接两个字符串的方法 -
string1.concat(string2);
这将返回一个新字符串:string1,并且string1在结尾处添加了string2。 还可以将concat()方法与字符串文字一起使用,例如 -
"My name is ".concat("Maxsu");
字符串通常使用+运算符连接,如 -
"Hello," + " world" + "!"
上面代码执行后得到的结果是:
"Hello, world!"
下面再来看另一个例子 -
public class StringDemo { public static void main(String args[]) { String string1 = "Bai"; System.out.println("Yii" + string1 + ".com"); } }
上面代码执行后得到的结果是:
YiiBai.com
3. 创建格式化字符串
Java中使用printf()和format()方法来打印带有格式化数字的输出。 String类有一个等效的类方法format(),它返回一个String对象而不是一个PrintStream对象。
使用String的static format()方法可以创建重用的格式化字符串,而不是一次性打印语句。 例如 -
System.out.printf("The value of the float variable is " +
"%f, while the value of the integer " +
"variable is %d, and the string " +
"is %s", floatVar, intVar, stringVar);
上面打印语句可使用格式化写为:
String fs; fs = String.format("The value of the float variable is " + "%f, while the value of the integer " + "variable is %d, and the string " + "is %s", floatVar, intVar, stringVar); System.out.println(fs);
4. String类方法
以下是String类定义的方法列表 -
| 编号 | 方法 | 描述 |
|---|---|---|
| 1 | char charAt(int index) | 返回指定索引处的字符。 |
| 2 | int compareTo(Object o) | 将此String对象与另一个对象进行比较。 |
| 3 | int compareTo(String anotherString) | 按字典顺序比较两个字符串。 |
| 4 | int compareToIgnoreCase(String str) | 按字典顺序比较两个字符串,但不区分大小写。 |
| 5 | String concat(String str) | 将指定的字符串连接到此字符串的末尾。 |
| 6 | boolean contentEquals(StringBuffer sb) | 当且仅当此String表示的字符串与指定的StringBuffer相同的字符序列时,才返回true。 |
| 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编码为字节序列,将结果存储到新的字节数组中。 |
| 13 | byte[] getBytes(String charsetName) | 使用指定的字符集将此String编码为字节序列,将结果存储到新的字节数组中。 |
| 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) | 将替换此字符串中匹配给定正则表达式的每个子字符串。 |
| 31 | String replaceFirst(String regex, String 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) | 返回传递的数据类型参数的字符串表示形式。 |
有完整的Java初级,高级对应的学习路线和资料!专注于java开发。分享java基础、原理性知识、JavaWeb实战、spring全家桶、设计模式、分布式及面试资料、开源项目,助力开发者成长!
欢迎关注微信公众号:码邦主

浙公网安备 33010602011771号