Java8种基本数据类型

字面常量

在编程语言中,字面常量(Literal Constants)是直接在代码中出现的固定值,它们代表了自身的值,不依赖于任何计算。Java中的字面常量主要包括数值常量、字符常量、字符串常量、布尔常量等。

  1. 数值常量:直接表示数值的常量。它们可以是整数(如 123)、浮点数(如 123.45)、长整型(在数值后加 Ll,如 123L)、双精度类型(在数值后加 Dd,如 123.45D),或者是十六进制(以 0x0X 开头,如 0xFF)、八进制(以 0 开头,如 077)和二进制(以 0b0B 开头,如 0b1010)。

  2. 字符常量:用单引号括起来的单个字符,例如 'a''1''%'。字符常量可以是一个普通的字符、一个转义字符(如 \n 表示换行)或一个Unicode字符(如 \u0061 表示 'a')。

  3. 字符串常量:用双引号括起来的字符序列,例如 "Hello, World!"。字符串常量可以包含任何字符,包括转义字符。

  4. 布尔常量:代表真和假的两个值,分别是 truefalse

  5. 空常量:特殊的字面常量 null,表示没有任何对象的状态。

字面常量的使用使代码更易读和维护,因为它们直观地展示了操作的值。在编写程序时,合理地使用字面常量可以提高代码的清晰度和效率。例如,在定义一些不变的值时使用字面常量,可以避免魔法数字(代码中直接使用的、未经说明的数字)的出现,使代码意图更明确。

数据类型

Java 中数据类型主要分为两类: 基本数据类型 引用数据类型
基本数据类型有四类八种:
1. 四类:整型、浮点型、字符型以及布尔型
2. 八种:
数据类型关键字内存占用范围
字节型byte1字节-128~127
短整型short2字节-32768~32767
整型int4字节-231~ 231 -1
长整型long8字节-263 ~ 263-1
单精度浮点数float4字节有范围, 一般不关注
双精度浮点数double8字节有范围, 一般不关注
字符型char2字节0~65535
布尔型boolean没有明确规定true和false

在Java中,每种基本数据类型都有一个对应的包装类,这些包装类将基本数据类型封装为对象。这种机制允许在需要使用对象的场合中使用基本数据类型。下面是Java基本数据类型及其对应包装类的简介:

  1. byte

    • 基本类型:byte
    • 包装类:Byte
    • 描述:8位、有符号的二进制补码整数,取值范围从-128到127。
  2. short

    • 基本类型:short
    • 包装类:Short
    • 描述:16位、有符号的二进制补码整数,取值范围从-32,768到32,767。
  3. int

    • 基本类型:int
    • 包装类:Integer
    • 描述:32位、有符号的二进制补码整数,取值范围从-2^31到2^31-1。
  4. long

    • 基本类型:long
    • 包装类:Long
    • 描述:64位、有符号的二进制补码整数,取值范围从-2^63到2^63-1。
  5. float

    • 基本类型:float
    • 包装类:Float
    • 描述:单精度、32位IEEE 754浮点数。
  6. double

    • 基本类型:double
    • 包装类:Double
    • 描述:双精度、64位IEEE 754浮点数。
  7. char

    • 基本类型:char
    • 包装类:Character
    • 描述:单一的16位Unicode字符。
  8. boolean

    • 基本类型:boolean
    • 包装类:Boolean
    • 描述:表示一位的信息,只有两个取值:truefalse

 变量

在编程中,变量是用来存储数据值的标识符。在Java中,每个变量都必须先声明其数据类型,然后才能使用。变量的命名必须遵循特定的规则和约定,如变量名可以包含字母、数字、美元符号($)和下划线(_),但不能以数字开头,也不能使用Java的保留关键字作为变量名。

Java中变量的类型主要分为两大类:

  1. 基本类型(Primitive Types)

    • 包括intdoublefloatbooleancharbyteshortlong
    • 直接存储值,效率较高。
  2. 引用类型(Reference Types)

    • 包括类(Class)、接口(Interface)、数组(Array)等。
    • 存储的是内存地址,即变量引用了对象的位置。

变量的声明和初始化

变量的声明指明了变量的类型和名称。例如:

int age;

变量的初始化是指为变量赋予一个初始值。初始化可以在声明变量时进行,也可以在变量声明后的任何时刻进行,但在变量使用前必须赋值。例如:

数据类型 变量名 = 初始值
int age = 30; // 声明同时初始化
age = 31; // 更新变量的值

在Java编程语言中,变量可以根据它们的数据类型分为多种类型。下面是各种类型变量的例子,以帮助理解它们的基本用法和区别:

基本类型变量

  1. 整型 (int)

    int age = 30;

    用于存储整数。

  2. 浮点型 (double)

    double salary = 5000.75;

    用于存储带有小数点的数字。

  3. 布尔型 (boolean)

    boolean isJavaFun = true;

    用于存储真 (true) 或假 (false)。

  4. 字符型 (char)

    char grade = 'A';

    用于存储单个字符,如字母或符号。

引用类型变量

  1. 字符串 (String)

    String name = "John Doe";

    用于存储文本。

  2. 数组 (Array)

    int[] numbers = {1, 2, 3, 4, 5};

    用于存储多个值。

  3. 类 (Class) 实例:

    Person person = new Person();

    Person是一个用户定义的类,person是这个类的一个实例。

  4. 列表 (List)

    List<String> fruits = new ArrayList<>(); 
    fruits.add("Apple"); 
    fruits.add("Banana");

    用于存储元素的动态数组。

特殊类型变量

  1. 枚举 (Enum)

    enum Color { 
        RED, GREEN, BLUE 
    } 
    Color favoriteColor = Color.BLUE;

    用于定义一组常量。

  2. 接口 (Interface) 实现:

    List<String> names = new LinkedList<>();

    List是一个接口,而LinkedList是实现List接口的类。

通过上述例子,我们可以看到Java中不同类型的变量如何被声明和初始化。选择正确的数据类型对于确保程序的正确性和效率至关重要。每种类型的变量都有其特定的用途和操作集,了解并正确使用这些类型是掌握Java编程的基础。

类型转换

在Java中,类型转换主要分为两种:隐式类型转换(自动类型转换)和显式类型转换(强制类型转换)。

隐式类型转换

隐式类型转换是指在表达式中,较“小”的类型自动转换为较“大”的类型,以避免数据丢失。这里的“小”和“大”是指数据类型能够存储数据的范围。例如:

int i = 100;
long l = i;  // int自动转换为long类型
double d = l; // long自动转换为double类型

在上述例子中,int类型的i自动转换为long类型的l,然后long类型的l自动转换为double类型的d,这些转换都是隐式的。

显式类型转换

显式类型转换,又称为强制类型转换,是指将一个数据类型强制转换为另一个数据类型。显式类型转换可能会导致精度丢失或数据溢出,因此需要程序员显式进行操作。例如:

double d = 100.04;  
long l = (long)d;  // double类型显式转换为long类型
int i = (int)l; // long类型显式转换为int类型

在这个例子中,double类型的d被强制转换为long类型的l,然后long类型的l被强制转换为int类型的i。由于doublelong,以及longint的转换可能导致精度丢失,因此需要使用强制类型转换。

注意事项

  • 显式类型转换可能会导致数据丢失,因此在进行强制类型转换时应谨慎。
  • 浮点数到整数的转换将丢失小数部分,仅保留整数部分。
  • 在涉及不同类型的算术运算时,较小的类型会自动提升到较大的类型。
  • 强制类型转换的语法是在要转换的变量前加上括号并指定目标类型。

理解和正确使用类型转换对于编写高效、准确的Java程序非常重要。在实际编程中,应根据具体情况选择合适的类型转换方式,以确保程序的正确性和高效性。

类型提升

在Java中,类型提升是指当表达式中涉及多种不同的基本数据类型时,数据类型会自动提升到能够表示所有可能值的最大类型,以确保数据精度不丢失。这个过程发生在编译期间,遵循一定的规则。

类型提升的规则

  1. 所有的byteshortchar类型将被提升到int类型

    1. 如果表达式中最大的数据类型是int,那么所有较小的数据类型都会被提升到int

  2. 如果表达式中存在long类型的数据,那么整个表达式的类型会被提升到long

  3. 如果表达式中包含float类型的数据,那么整个表达式的类型将被提升到float

  4. 如果表达式中包含double类型的数据,那么整个表达式的类型将被提升到double

示例

假设我们有以下几种类型的变量:

byte b = 10;
short s = 20;
char c = 'A';
int i = 30;
long l = 40L;
float f = 50.0F;
double d = 60.0D;

如果我们在一个表达式中同时使用这些变量,那么它们会根据上述规则进行类型提升。例如:

double result = b + s + c + i + l + f + d;

在这个表达式中,byteshortcharintlong类型的变量首先会被提升到float类型(因为ffloat类型),然后整个表达式再被提升到double类型(因为ddouble类型),以匹配最大的数据类型double。因此,result变量必须声明为double类型以存储最终结果。

注意事项

  • 类型提升主要关注数值类型的自动转换。
  • 在设计程序时,要注意类型提升可能带来的影响,特别是在精确度非常重要的情况下。
  • 类型提升保证了数据操作的安全性,避免了数据精度的丢失。

正确理解和利用类型提升机制,可以帮助避免数据类型相关的错误,保证程序的正确性和效率。

字符串类型

 Java中使用String类定义字符串类型,比如:

public static void main(String[] args) {
    String s1 = "hello";
    String s2 = " world";
    System.out.println(s1);
    System.out.println(s2);
    System.out.println(s1+s2); // s1+s2表示:将s1和s2进行拼接
}

int 转成 String

  1. 使用String.valueOf(int)方法:

    int num = 100; String str = String.valueOf(num);
  2. 使用Integer.toString(int)方法:

    int num = 100; String str = Integer.toString(num);
  3. 利用字符串连接的方式(虽然这种方式在性能上不是最优的):

    int num = 100; String str = "" + num;

String 转成 int

  1. 使用Integer.parseInt(String)方法:

    String str = "100"; int num = Integer.parseInt(str);

    这是最常用的方式。如果str不能被解析为int,这个方法会抛出NumberFormatException

  2. 使用Integer.valueOf(String)方法:

    String str = "100"; int num = Integer.valueOf(str);

    Integer.valueOf(String)返回的是Integer对象,但由于自动拆箱,可以直接赋值给int变量。如果字符串不能被解析成一个整数,这个方法同样会抛出NumberFormatException

注意事项

  • 在使用parseIntvalueOf方法将String转换成int时,确保字符串是有效的整数形式,否则会抛出NumberFormatException
  • 考虑到性能和可读性,推荐使用String.valueOf(int)Integer.parseInt(String)进行类型转换。

这些方法提供了灵活的方式来在intString类型之间进行转换,是Java基本但非常重要的操作。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值