Java数据类型教程 – Java自动装箱和拆箱 AutoBoxing和unboxing使用原始数据类型及其相应的包装类。 它们完全在编译器中实现。 从原始数据类型(字节,短整型,长整型,浮点型,双精度型,字符型和布尔型)到其对应的包装器对象(字节,整数,长整数,浮点型,双精度,字符和布尔)的自动换行被称为自动装箱。 反向,从包装器对象到其对应的原始数据类型,被称为取消装箱。 使用自动装箱/取消装箱,以下代码有效: Integer n = 2; // Boxing int a = n; // Unboxing 编译器将用以下语句替换上面的语句: Integer n = Integer.valueOf(2); int a = n.intValue();
Java数据类型教程 – Java无符号数据类型 Java不支持无符号数据类型。 byte,short,int和long都是有符号数据类型。 对于有符号数据类型,值范围的一半存储正数,一半用于负数,因为一个位用于存储值的符号。 例如,一个字节需要8位;其范围是-128到127.如果您只在一个字节中存储正数,则其范围将为0到255。 Java在包装器类中有一些静态方法,以支持处理带符号值中的位的操作,就像它们是无符号整数一样。 字节类包含两个静态方法: int toUnsignedInt(byte x) long toUnsignedLong(byte x) 这些方法将指定的字节参数转换为int和long,就像该字节存储无符号值一样。 如果指定的字节为零或正,则转换的int和long值将相同。 如果参数是负数,则转换的数字将是28 + x。 例如,对于-10的输入,返回的值将是28 +(-10),这是246。 负数以2的补码形式存储。值-10将被存储为11110110.最高有效位1表示它是一个负数。 前7位(1110110)的2的补码将是001010,十进制为10。 如果将实际位11110110视为无符号整数,其值为246(128 + 64 + 32 + 16 + 0 + 4 + 2 + 0)。 例子 以下代码显示了如何将存储在字节中的值作为无符号整数: public class Main { public static void main(String[] args) { byte b = -10; int x = Byte.toUnsignedInt(b); System.out.println("Signed value in byte = " + b); System.out.println("Unsigned value in byte = " + x); } } 上面的代码生成以下结果。 例2 Integer类包含以下静态方法以支持无符号运算和转换: int compareUnsigned(int x, int y) int divideUnsigned(int dividend, int divisor) int parseUnsignedInt(String s) int parseUnsignedInt(String s, int radix) int remainderUnsigned(int dividend, int divisor) long toUnsignedLong(int x) String toUnsignedString(int i) String toUnsignedString(int i, int radix) 以下代码显示了对两个int变量的除法运算,如同它们的位表示无符号值一样: public class Main { public...
Java数据类型教程 – Java数据类型包装器 Java库在java.lang包中提供了八个类来表示八种基本类型中的每一种。 这些类称为包装类,因为它们在对象中包装原始值。 下表列出了原始类型及其相应的包装类。 基本类型 包装类 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean 方法 所有包装类都是不可变的。它们提供了两种方法来创建它们的对象: 使用构造函数 使用valueOf()工厂方法 除了Character之外,每个包装类都提供至少两个构造函数:一个采用对应基本类型的值,另一个采用String。 Character类只提供一个接受char的构造函数。 例子 以下代码创建一些包装类的对象: public class Main { public static void staticMethod() { // Creates an Integer object from an int Integer intObj1 = new Integer(100); // Creates an Integer object from a String Integer intObj2 = new Integer("1969"); // Creates a Double object from a double Double doubleObj1 = new Double(10.45); // Creates a Double object from a String Double doubleObj2 = new Double("234.60"); // Creates a Character object from a char Character charObj1 = new Character("A"); // Creates a Boolean object from a boolean Boolean booleanObj1 = new Boolean(true); //...
Java数据类型教程 – Java字符数据类型 Character类的一个对象包装一个char值。 字符类包含isLetter()和isDigit()方法来检查字符是否为字母和数字。 toUpperCase()和toLowerCase()方法将字符转换为大写和小写。 该类提供了一个构造函数和一个工厂valueOf()方法来从char创建对象。 charValue()方法返回对象包装的char。 例子 以下代码显示了如何创建Character对象以及如何使用它们的一些方法: public class Main { public static void main(String[] args) { // Using the constructor Character c1 = new Character("A"); // Using the factory method - preferred Character c2 = Character.valueOf("2"); Character c3 = Character.valueOf("-"); // Getting the wrapped char values char cc1 = c1.charValue(); char cc2 = c2.charValue(); char cc3 = c3.charValue(); System.out.println("c1 = " + c1); System.out.println("c2 = " + c2); System.out.println("c3 = " + c3); // Using some Character class methods on c1 System.out.println("isLowerCase c1 = " + Character.isLowerCase(cc1)); System.out.println("isDigit c1 = " + Character.isDigit(cc1)); System.out.println("isLetter c1 = " + Character.isLetter(cc1)); System.out.println("Lowercase of c1 = " + Character.toLowerCase(cc1)); // Using some Character class methods on c2 System.out.println("isLowerCase c2...