Java基本数据类型及溢出、包装类

原文:https://www.runoob.com/java/java-basic-datatypes.html

变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。

内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。

因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。

Java 的两大数据类型:

  • 内置数据类型
  • 引用数据类型

 

一、内置数据类型

1、基本数据类型介绍

Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

byte:

  • byte 数据类型是8位(即1个字节)、有符号的,以二进制补码表示的整数;
  • 最小值是 -128(-2^7);
  • 最大值是 127(2^7-1);
  • 默认值是 0;
  • byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;
  • 例子:byte a = 100,byte b = -50。

short:

  • short 数据类型是 16 位(即2个字节)、有符号的以二进制补码表示的整数
  • 最小值是 -32768(-2^15);
  • 最大值是 32767(2^15 - 1);
  • Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
  • 默认值是 0;
  • 例子:short s = 1000,short r = -20000。

int:

  • int 数据类型是32位(即4个字节)、有符号的以二进制补码表示的整数;
  • 最小值是 -2,147,483,648(-2^31);
  • 最大值是 2,147,483,647(2^31 - 1);
  • 一般地整型变量默认为 int 类型;
  • 默认值是 0 ;
  • 例子:int a = 100000, int b = -200000。

long:

  • long 数据类型是 64 位(即8个字节)、有符号的以二进制补码表示的整数;
  • 最小值是 -9,223,372,036,854,775,808(-2^63);
  • 最大值是 9,223,372,036,854,775,807(2^63 -1);
  • 这种类型主要使用在需要比较大整数的系统上;
  • 默认值是 0L;
  • 例子: long a = 100000L,long b = -200000L。
    "L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。

float:

  • float 数据类型是单精度、32位(即4个字节)、符合IEEE 754标准的浮点数;
  • float 在储存大型浮点数组的时候可节省内存空间;
  • 默认值是 0.0f;
  • 浮点数不能用来表示精确的值,如货币;
  • 例子:float f1 = 234.5f。

double:

  • double 数据类型是双精度、64 位(即8个字节)、符合 IEEE 754 标准的浮点数;
  • 浮点数的默认类型为 double 类型;
  • double类型同样不能表示精确的值,如货币;
  • 默认值是 0.0d;
  • 例子:

    double   d1  = 7D ;
    double   d2  = 7.; 
    double   d3  =  8.0; 
    double   d4  =  8.D; 
    double   d5  =  12.9867;

    7 是一个 int 字面量,而 7D,7. 和 8.0 是 double 字面量。

boolean:

  • boolean数据类型表示一位的信息;
  • 只有两个取值:true 和 false;
  • 这种类型只作为一种标志来记录 true/false 情况;
  • 默认值是 false;
  • 例子:boolean one = true。

char:

  • char 类型是一个单一的 16 位(即2个字节) Unicode 字符;
  • 最小值是 \u0000(十进制等效值为 0);
  • 最大值是 \uffff(即为 65535);
  • char 数据类型可以储存任何字符;
  • 例子:char letter = 'A';。

实例

对于数值类型的基本类型的取值范围,我们无需强制去记忆,因为它们的值都已经以常量的形式定义在对应的包装类中了。请看下面的例子:

复制代码
public class PrimitiveTypeTest {
    public static void main(String[] args) {
        // byte
        System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);
        System.out.println("包装类:java.lang.Byte");
        System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);
        System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);
        System.out.println();

        // short  
        System.out.println("基本类型:short 二进制位数:" + Short.SIZE);
        System.out.println("包装类:java.lang.Short");
        System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);
        System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);
        System.out.println();

        // int  
        System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);
        System.out.println("包装类:java.lang.Integer");
        System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);
        System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);
        System.out.println();

        // long  
        System.out.println("基本类型:long 二进制位数:" + Long.SIZE);
        System.out.println("包装类:java.lang.Long");
        System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);
        System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);
        System.out.println();

        // float  
        System.out.println("基本类型:float 二进制位数:" + Float.SIZE);
        System.out.println("包装类:java.lang.Float");
        System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);
        System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);
        System.out.println();

        // double  
        System.out.println("基本类型:double 二进制位数:" + Double.SIZE);
        System.out.println("包装类:java.lang.Double");
        System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);
        System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);
        System.out.println();

        // char  
        System.out.println("基本类型:char 二进制位数:" + Character.SIZE);
        System.out.println("包装类:java.lang.Character");
        // 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台  
        System.out.println("最小值:Character.MIN_VALUE="
                + (int) Character.MIN_VALUE);
        // 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台  
        System.out.println("最大值:Character.MAX_VALUE="
                + (int) Character.MAX_VALUE);
    }
}
复制代码

编译以上代码输出结果如下所示:

基本类型:byte 二进制位数:8
包装类:java.lang.Byte
最小值:Byte.MIN_VALUE=-128
最大值:Byte.MAX_VALUE=127

基本类型:short 二进制位数:16
包装类:java.lang.Short
最小值:Short.MIN_VALUE=-32768
最大值:Short.MAX_VALUE=32767

基本类型:int 二进制位数:32
包装类:java.lang.Integer
最小值:Integer.MIN_VALUE=-2147483648
最大值:Integer.MAX_VALUE=2147483647

基本类型:long 二进制位数:64
包装类:java.lang.Long
最小值:Long.MIN_VALUE=-9223372036854775808
最大值:Long.MAX_VALUE=9223372036854775807

基本类型:float 二进制位数:32
包装类:java.lang.Float
最小值:Float.MIN_VALUE=1.4E-45
最大值:Float.MAX_VALUE=3.4028235E38

基本类型:double 二进制位数:64
包装类:java.lang.Double
最小值:Double.MIN_VALUE=4.9E-324
最大值:Double.MAX_VALUE=1.7976931348623157E308

基本类型:char 二进制位数:16
包装类:java.lang.Character
最小值:Character.MIN_VALUE=0
最大值:Character.MAX_VALUE=65535

Float和Double的最小值和最大值都是以科学记数法的形式输出的,结尾的"E+数字"表示E之前的数字要乘以10的多少次方。比如3.14E3就是3.14 × 103 =3140,3.14E-3 就是 3.14 x 10-3 =0.00314。

实际上,JAVA中还存在另外一种基本类型 void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。

 

2、类型默认值

下表列出了 Java 各个类型的默认值:

数据类型默认值
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
char 'u0000'
String (or any object) null
boolean false
复制代码
public class Test {
    static boolean bool;
    static byte by;
    static char ch;
    static double d;
    static float f;
    static int i;
    static long l;
    static short sh;
    static String str;

    public static void main(String[] args) {
        System.out.println("Bool :" + bool);
        System.out.println("Byte :" + by);
        System.out.println("Character:" + ch);
        System.out.println("Double :" + d);
        System.out.println("Float :" + f);
        System.out.println("Integer :" + i);
        System.out.println("Long :" + l);
        System.out.println("Short :" + sh);
        System.out.println("String :" + str);
    }
}
复制代码

 实例输出结果为:

Bool     :false
Byte     :0
Character:
Double   :0.0
Float    :0.0
Integer  :0
Long     :0
Short    :0
String   :null

 

二、引用类型

  • 在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不能被改变了。
  • 对象、数组都是引用数据类型。
  • 所有引用类型的默认值都是null。
  • 一个引用变量可以用来引用任何与之兼容的类型。
  • 例子:Site site = new Site("Runoob")。

 

三、Java 常量

常量在程序运行时是不能被修改的。

在 Java 中使用 final 关键字来修饰常量,声明方式和变量类似:

final double PI = 3.1415927;

虽然常量名也可以用小写,但为了便于识别,通常使用大写字母表示常量。

字面量可以赋给任何内置类型的变量。例如:

byte a = 68;
char a = 'A'

byte、int、long、和short都可以用十进制、16进制以及8进制的方式来表示。

当使用字面量的时候,前缀 0 表示 8 进制,而前缀 0x 代表 16 进制, 例如:

int decimal = 100;  // 十进制
int octal = 0144;  // 八进制
int hexa =  0x64;  // 十六进制

和其他语言一样,Java的字符串常量也是包含在两个引号之间的字符序列。下面是字符串型字面量的例子:

"Hello World"
"two\nlines"
"\"This is in quotes\""

字符串常量和字符变量都可以包含任何 Unicode 字符。例如:

char a = '\u0001';
String a = "\u0001";

Java语言支持一些特殊的转义字符序列。

符号字符含义
\n 换行 (0x0a)
\r 回车 (0x0d)
\f 换页符(0x0c)
\b 退格 (0x08)
\0 空字符 (0x0)
\s 空格 (0x20)
\t 制表符
\" 双引号
\' 单引号
\\ 反斜杠
\ddd 八进制字符 (ddd)
\uxxxx 16进制Unicode字符 (xxxx)

 

四、数据类型转换

整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。

转换从低级到高级。

低  ------------------------------------>  高
(byte,short,char) —> int —> long—> float —> double

数据类型转换必须满足如下规则:

  • 1. 不能对boolean类型进行类型转换。

  • 2. 不能把对象类型转换成不相关类的对象。

  • 3. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。

  • 4. 转换过程中可能导致溢出或损失精度,例如:

    int i =128;   
    byte b = (byte)i;  // 结果是 -128

    因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。

  • 5. 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:

    (int)23.7 == 23;        
    (int)-45.89f == -45

 

1、自动类型转换

必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。

复制代码
public class ZiDongLeiZhuan{
    public static void main(String[] args){
        char c1 = 'a';  // 定义一个char类型
        int i1 = c1;  // char自动类型转换为int
        System.out.println("char自动类型转换为int后的值等于" + i1);

        char c2 = 'A';  // 定义一个char类型
        int i2 = c2 + 1;  // char 类型和 int 类型计算
        System.out.println("char类型和int计算后的值等于" + i2);

        long ll = 432L;  // 定义一个long类型
        float ff = ll;  // long自动类型转换为float
        System.out.println("long类型自动类型转换为float后的值等于" + ff);
    }
}
复制代码

运行结果为:

char自动类型转换为int后的值等于97
char类型和int计算后的值等于66
long类型自动类型转换为float后的值等于432.0

解析:c1 的值为字符 a ,查 ASCII 码表可知对应的 int 类型值为 97, A 对应值为 65,所以 i2 = 65 + 1 = 66。

 

2、强制类型转换

  • 条件是转换的数据类型必须是兼容的。

  • 一般是数据类型大的才需要强制转换成小的
  • 格式:(type)value type是要强制类型转换后的数据类型

public class QiangZhiZhuanHuan{
    public static void main(String[] args){
        int i1 = 123;
        byte b = (byte)i1;  // 强制类型转换为byte
        System.out.println("int强制类型转换为byte后的值等于"+b);
    }
}

运行结果:

int强制类型转换为byte后的值等于123

 

3、隐含强制类型转换

  • 整数的默认类型是 int。

  • 小数默认是 double 类型浮点型,在定义 float 类型时必须在数字后面跟上 F 或者 f。

复制代码
public class Test {
    public static void main(String[] args) {
        int i1 = 1;  // 整数的默认类型是 int

        double d1 = 7.;  // 小数默认是 double 类型浮点型
        double d2 = 7.1;  // 小数默认是 double 类型浮点型
        double d3 = 8.D;  // 也可以显示表示 D
        double d4 = 8.1D;  // 也可以显示表示 D

        // float f = 1.11;  // 定义 float 类型时必须在数字后面跟上 F 或者 f, 这里会显示报错
        float f1 = 1.11F;  // 定义 float 类型时必须在数字后面跟上 F 或者 f

        System.out.println("i1: " + i1);
        System.out.println("d1: " + d1);
        System.out.println("d2: " + d2);
        System.out.println("d3: " + d3);
        System.out.println("d4: " + d4);
        System.out.println("f1: " + f1);
    }
}
复制代码

结果:

i1: 1
d1: 7.0
d2: 7.1
d3: 8.0
d4: 8.1
f1: 1.11

 

五、数据类型溢出

在 Java 中,只有数字类型才能参与运算。但是每个数据类型都有他的取值范围。
例如 byte 数据类型,它的取值范围为 -128 到 127 。
当我们使用 byte b = 128; 时,肯定会报错。
但是使用 byte b = 127 + 1; 并不会报错。
而且运算的结果为 -128。
我们可以把数据类型的取值范围看作是一个圆,每多一个数据向前移动一个,当数据达到最大值时,我们再加 1,可以就会变成最小值,这就是数据的溢出。
还有强转数据类型的时候,也会出现溢出的情况,下面看下例子:

复制代码
public class MyMainClass {
    public static void main(String[] args) {
        /*
         * byte 取值范围为 -128 到 127
         * 当把 int 129 强转为byte时,即等于是 127 + 2
         * 最大值 127 向前1位就回到了最小值 -128 ,向前2位即: -127
         */
        int i1 = 129;
        byte b1 = (byte) i1;  // 129 往前移两位得 -127
        System.out.println(b1);  // -127

        /* 同理
         * byte 取值范围为 -128 到 127
         * 当把 int -129 强转为byte时,即等于是 -128 - 1
         * 最小值 -128 向前1位就回到了最大值 127
         */
        int i2 = -129;
        byte b2 = (byte) i2;  // -129 往前移一位得 127
        System.out.println(b2);  // 127

        /* 同理
         * byte 取值范围为 -128 到 127
         * 当把 int 256 强转为byte时,即等于是 127 + 129
         * 最大值 127 向前1位就回到了最小值 -128 ,向前129位即: 0
         */
        int i3 = 256;
        byte b3 = (byte) i3;  // 256往前移(256-127=129)位,即0
        System.out.println(b3);  // 0
    }
}
复制代码

 

六、包装类

1、包装类的基本概念

原文链接:https://blog.csdn.net/weixin_52385232/article/details/123758038

基本数据类
    Java中的基本数据类型不是面向对象的,它们只是纯粹的数据,除了数值本身的信息之外,基本类型数据不带有其他信息或者可操作方法。

包装类
    为了方便操作基本数据类型值,将其封装成了对象,在对象中定义了属性和行为丰富了该数据的操作。用于描述该对象的类就称为基本数据类型对象包装类。

 

针对八大基本数据类型定义相应的引用类型---包装类

基本数据类型包装类包装类的直接父类
boolean Boolean

Object

char Character
byte Byte

Number

short Short
int Integer
long Long
float Float
double Double

创建包装类的方式:

  • 方法一:包装类类型 变量名 = new 包装类构造方法(参数);
  • 方法二:包装类类型 变量名 = 包装类.valueOf(参数值);
复制代码
public class Test {
    public static void main(String[] args) {
        /* new 创建包装类 */
        Integer i = new Integer(10); //根据基本类型参数创建包装类对象
        Double d = new Double(3.14);
        Integer i2 = new Integer("10");//根据字符串参数创建包装类对象
        Double d2 = new Double("3.14");

        /* valueOf 创建包装类 */
        Integer i3 = Integer.valueOf(10); //根据基本类型参数创建包装类对象
        Double d3 = Double.valueOf(3.14);
        Integer i4 = Integer.valueOf("10");//根据字符串参数创建包装类对象
        Double d5 = Double.valueOf("3.14");
    }
}
复制代码

 

2、包装类和基本数据类型的转换(装箱拆箱)

  • 装箱:基本类型 -> 包装类型
  • 拆箱:包装类型 -> 基本类型
  • jdk5之前,需要手动装箱和拆箱
  • jdk5以后(含jdk5)是自动装箱和拆箱
  • 自动装箱底层调用的是valueOf方法,比如Integer.valueOf()
  • 自动拆箱底层调用的是intValue方法,比如Integer.intValue()

案例:jdk5之前,需要手动装箱和拆箱

复制代码
public class Test {
    public static void main(String[] args) {
        /* 两种手动装箱的方式:int -> Integer */
        int i1 = 100;
        Integer itg1 = new Integer(i1);
        Integer itg2 = Integer.valueOf(i1);
        System.out.println(itg1);
        System.out.println(itg2);

        /* 手动拆箱:Integer -> int */
        int i2 = itg2.intValue();
        System.out.println(i2);
    }
}
复制代码

 

案例:jdk5之后,就可以自动装箱和拆箱

复制代码
public class Test {
    public static void main(String[] args) {
        /* 自动装箱:int -> Integer */
        int i1 = 100;
        Integer itg1 = i1;
        System.out.println(itg1);

        /* 自动拆箱:Integer -> int */
        int i2 = itg1;
        System.out.println(i2);
    }
}
复制代码

 

3、包装类的常用方法

原文:https://www.jianshu.com/p/e654fd457cfa

1.compareTo()
功能:在数字上比较两个Integer对象,如果该Integer在数值上等于Integer参数,则返回0值;如果该Integer在数值上小于Integer参数,则返回 -1;如果Integer在数值上大于Integer参数,则返回 1 。

2.equals()
功能:将此对象与指定对象进行比较。当参数不是null时,且两个对象的值相同时,结果为 "true",否则 "false"

3.toString()
返回表示指定数据类型(8种基本数据类型)的一个新String对象.

4.parseXXX()
parseInt(String s):将字符串参数作为有符号的十进制整数进行解析。
parseInt(String s, int radix):将字符串参数解析为有符号的radix进制整数。
parseLong(String s):将字符串参数作为有符号的十进制长整数进行解析。
parseBoolean(String s):将字符串参数解析为布尔值。

5.Character类特有的常见方法
public static boolean isLetter(char ch):确定指定字符是否为字母。
public static boolean isLetter(int codePoint):确定指定字符(Unicode编码)是否为字母。

public static boolean isDigit(char ch):确定指定字符是否为数字。
public static boolean isDigit(int codePoint):确定指定字符(Unicode 代码点)是否为数字。


public static boolean isLetterOrDigit(char ch):确定指定字符是否为字母或数字。
public static boolean isLetterOrDigit(int codePoint):确定指定字符(Unicode编码)是否为字母或数字。

public static boolean isLowerCase(char ch):确定指定字符是否为小写字母。
public static boolean isLowerCase(int codePoint):确定指定字符(Unicode编码)是否为小写字母。

public static boolean isUpperCase(char ch):确定指定字符是否为大写字母。
public static boolean isUpperCase(int codePoint):确定指定字符(Unicode编码)是否为大写字母。

public static boolean isSpaceChar(char ch):确定指定字符是否为Unicode空白字符。

public static char toLowerCase(char ch):将字符参数转换为小写。
public static int toLowerCase(int codePoint):将字符(Unicode编码)参数转换为小写。

public static char toUpperCase(char ch):将字符参数转换为大写。
public static int toUpperCase(int codePoint):将字符(Unicode 代码点)参数转换为大写。

6.获取对象内包装的基本类型值方法
byteValue()
shortValue()
intValue()
longValue()
floatValue()
doubleValue()

复制代码
public class Test {
    public static void main(String[] args) {
        /* compareTo、equals */
        System.out.println("=== compareTo、equals ===");
        Double a = new Double(5);
        Double b = new Double(5);
        Double c = new Double(-15);
        System.out.println(a.compareTo(c));  // 1
        System.out.println(a.compareTo(b));  // 0
        System.out.println(a.equals(b));  // true
        System.out.println(a.equals(c));  // false
        System.out.println(a == b);  // false

        /* toString */
        System.out.println("=== toString ===");
        Integer i = new Integer(5);
        Float f = new Float(6.6f);
        System.out.println(i.toString());  // 5
        System.out.println(f.toString());  // 6.6
        System.out.println(Integer.toString(123));  // 123

        /* parseXXX */
        System.out.println("=== parseXXX ===");
        // 只有parseInt可以转换8进制、16进制
        System.out.println(Integer.parseInt("255"));  // 255是整型字符串,转换为整型:255
        System.out.println(Integer.parseInt("11111111", 2)); // 11111111是二进制字符串,转换为整型: 255
        System.out.println(Integer.parseInt("11111111"));  // 11111111是整型字符串,转换为整型:11111111
        System.out.println(Integer.parseInt("377"));  //  377是整型字符串,转换为整型:377
        System.out.println(Integer.parseInt("377", 8));  // 377是8进制字符串,转换为整型:255
        System.out.println(Integer.parseInt("ff", 16));  // ff是16进制字符串,转换为整型:255

        System.out.println(Float.parseFloat("12.34"));  // 12.34
        System.out.println(Double.parseDouble("12.34"));  // 12.34
        System.out.println(Long.parseLong("1254687454"));  // 1254687454

        /*  Character类常用方法的使用 */
        System.out.println("=== Character ===");
        System.out.println("确定指定字符是否为字母:");
        System.out.println(Character.isLetter('1'));  // false
        System.out.println(Character.isLetter('b'));  // true
        System.out.println(Character.isLetter(97));  // 这里的97是指Unicode编码,97是 a : true
        System.out.println(Character.isLetter(48));  // 这里的48是指Unicode编码,48是 0 : false

        System.out.println("确定指定字符是否为数字:");
        System.out.println(Character.isDigit('1'));  // true
        System.out.println(Character.isDigit('b'));  // false
        System.out.println(Character.isDigit(97));  // 这里的97是指Unicode编码,97是 a : false
        System.out.println(Character.isDigit(48));  // 这里的48是指Unicode编码,48是 0 : true

        System.out.println("确定指定字符是否为字母或数字:");
        System.out.println(Character.isLetterOrDigit('1'));  // true
        System.out.println(Character.isLetterOrDigit(97));  // true
        System.out.println(Character.isLetterOrDigit('*'));  // false

        System.out.println("确定指定字符是否为小写字母:");
        System.out.println(Character.isLowerCase(97));  // a : true
        System.out.println(Character.isLowerCase(65));  // A : false
        System.out.println(Character.isLowerCase('a'));  // true

        System.out.println("确定指定字符是否为大写字母:");
        System.out.println(Character.isUpperCase(97));  // false
        System.out.println(Character.isUpperCase(65));  // true
        System.out.println(Character.isUpperCase('a'));  // false

        System.out.println("确定指定字符是否为Unicode空白字符:");
        System.out.println(Character.isSpaceChar('A'));  // false
        System.out.println(Character.isSpaceChar(' '));  // true

        System.out.println("将字符参数转换为小写");
        System.out.println(Character.toLowerCase(97));  // 入参是Unicode编码数字,返回也是数字:97
        System.out.println(Character.toLowerCase(65));  // 入参是Unicode编码数字,返回也是数字:97
        System.out.println(Character.toLowerCase('A'));  // 入参是字符,返回也是字符:a

        System.out.println("将字符参数转换为大写");
        System.out.println(Character.toUpperCase(97));  // 入参是Unicode编码数字,返回也是数字:65
        System.out.println(Character.toUpperCase(65));  // 入参是Unicode编码数字,返回也是数字:65
        System.out.println(Character.toUpperCase('a'));  // 入参是字符,返回也是字符:A

        /*  基本类型值方法 */
        System.out.println("=== 基本类型值方法 ===");
        Double obj = new Double(100.86);
        double d = obj.doubleValue();  // Double包装类转换为 double 类型
        int d2i = obj.intValue();  // Double包装类转换为 int 类型
        System.out.println(d);  // 100.86
        System.out.println(d2i);  // 100
    }
}
复制代码

 

4、数据类型转换的补充

1.包装类过渡类型转换

一般情况下,我们首先声明一个变量,然后生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了。例如:

当希望把float型转换为double型时:

float f1 = 100.00f;
Float F1 = new Float(f1);
double d1 = F1.doubleValue();  // F1.doubleValue()为Float类的返回double值型的方法

简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。即:Boolean(boolean value)、Character(char value)、Integer(int value)、Long(long value)、Float(float value)、Double(double value)

而在各个包装类中,总有形为××Value()的方法,来得到其对应的简单类型数据。利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量。

2.其它类型向字符串的转换

  •  调用类的串转换方法:X.toString();  例如: Integer i = Integer.valueOf(1); String s1 = i.toString();
  •  自动转换:X + ""; 例如:Integer i2 = Integer.valueOf(2);  String s2 = i2 + "";   或者  int i3 = 3;  String s3 = i3 + "";
  •  使用String的方法:String.valueOf(X);

3.字符串向其它类型的转换

1、先转换成相应的封装器实例,再调用对应的方法转换成其它类型

例如,字符中"32.1"转换double型的值的格式为:new Float("32.1").doubleValue()。也可以用:Double.valueOf("32.1").doubleValue()

2、静态parseXXX方法

String s = "1";
byte b = Byte.parseByte(s);
short t = Short.parseShort(s);
int i = Integer.parseInt(s);
long l = Long.parseLong(s);
Float f = Float.parseFloat(s);
Double d = Double.parseDouble(s);

3、Character的getNumericValue(char ch)方法

 

posted @   我用python写Bug  阅读(338)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示