Java的基本数据类型

Java的基本数据类型

介绍Java中变量的概念、基本数据类型、基本数据类型变量的使用及它们之间转换,最后还会对基本数据类型与String的转换做一个说明。

Author: Msuenb

Date: 2023-01-28


变量的概念

内存中的一个存储区域,该区域的数据可一在同一类型范围内不断变化。变量是程序中最基本的存储单元。变量三要素:类型、名称、值

变量的作用:用于在内存中保存数据

变量的分类

变量的分类方式有两种,一种是按照数据类型,分为基本数据类型和引用数据类型;另一种是按照声明的位置,分为成员变量和局部变量。

按数据类型
  • 基本数据类型(primitive type):
    • 数值型
      • 整数类型:byteshortintlong
      • 浮点类型:floatdouble
    • 字符型:char
    • 布尔型:boolean
  • 引用数据类型(reference type):
    • 类(class):StringInteger、用户声明的类 ...
    • 接口(interface)
    • 数组( [ ] )

八大基本数据类型:byteshortintlongfloatdoublecharboolean

按声明的位置
  • 成员变量:在方法体外,类体内声明的变量
    • 实例变量(不以static修饰)
    • 类变量(以static修饰)
  • 局部变量:在方法体外声明的变量
    • 方法局部变量(在方法内定义)
    • 代码块局部变量(在代码块内定义)
    • 形参(方法、构造器中定义的变量)
public class Test {
    int a = 0;                  // a 实例变量
    static int b = 0;           // b 类变量(静态变量)
    
    public void method(int c) { // c 形参
        int d = 0;              // d 方法局部变量
        while (d++ < 10) {
            int e = 0;          // e 代码块局部变量
        }
    }
}

变量的使用

整数类型:byteshortintlong
  • Java 中各整数类型有固定的便是范围和字段长度,不受具体的OS影响,以保证 java 程序的可移植性。
  • Java的整型常量默认为 int 型,声明 long 型常量须后加 ’l‘ 或 ’L‘ 。
类型 长度 范围
byte 1字节 -128 ~ +127
short 2字节 -2^15 ~ 2^15-1
int 4字节 -2^31 ~ 2^31-1
long 8字节 -2^63 ~ 2^63-1
浮点类型:floatdouble
  • float:单精度,尾数可以精确到7位有效数字。很多情况下,精度很难满足要求。
  • double:双精度,精度是float的两倍。通常采用此类型
  • Java的浮点型常量默认为double型,声明float型变量,须后加 ’f‘ / 'F'。
类型 长度 范围
float 4字节 -3.403E38 ~ 3.403E38
double 8字节 -1.798E308 ~ -1.798E308
字符型和布尔型:charboolean
  • char 类型长度为 2 字节

  • 不可以用 0 和 非0 的整数替代 false 和 true

  • boolean 编译后使用 int 数据类型替代:true用1表示,false用0表示

byte b1 = 12;
//byte b2 = 128;  // 编译不通过 byte范围 -128 ~ +127
System.out.println(b1);

// 声明long型变量,便须加上'l'/'L'
short s1 = 128;
int i1 = 1234;
long l1 = 4567123L;
System.out.println(s1);
System.out.println(i1);
System.out.println(l1);

float f1 = 123.456F;
double d1 = 123456.0987;
System.out.println(f1);
System.out.println(d1);

// 由一对单引号 内部一个字符
char c1 = 'a';
char c2 = ''; //编译不通过  不能为空
char c2 = 'as'; //编译不通过
char c3 = '\t'; // 转义字符   也可以使用Unicode编码值表示
System.out.println(a);

基本数据类型变量间的转换

这里讨论的只是7中数据类型变量间的运算,不包含boolean类型。

自动类型提升

当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。

byteshortchar --> int --> long --> float --> double

char c1 = 'a';
byte b1 = 2;
short s1 = 12;
int i1 = 129;
//byte b2 = i1 + b1;    // 编译不通过
//short s2 = b1 + s1;   // 编译不通过
//short s3 = c1 + b1;   // 编译不通过 char,byte和short运算(包括同种类型之间的运算)时结果为int类型
        
int i2 = i1 + b1;
int i3 = i1 + b1;
long l1 = i1 + b1;
float f1 = l1;
double d1 = f1;

注意:char,byte和short运算(包括同种类型之间的运算)时结果为int类型

强制类型转换

自动类型提升运算的逆运算。使用强转符cast

double d1 = 13.3;
int i1 = (int) d1;  // 结果:13   会丢失精度

long l1 = 123;
short s2 = (short) l1;  // 结果:123  没有丢失精度

int i2 = 128;
byte b1 = (byte) i2;  //-128  丢失精度
类型转换注意事项
long l = 123123;    // 123123 为int型 且没超出int型范围 自动提升为long型
//long l2 = 123123123123123;  // 编译失败

//float f = 12.3; //编译失败 12.3 默认为double 需要强转为float
         
byte b = 12;
//byte b1 = b + 1;    // 1 默认为int  结果要用 int接受

基本数据类型与String间转换

String属于引用数据类型,声明String类型变量时,使用一对""。String可以和8种基本数据类型变量做运算,且只能是连接运算,结果为String类型。

int num = 1001;
String numStr = "学号:";
String info = numStr + num;		// 结果:“学号:1001”  此处 + 执行的是连接运算

boolean b = true;
String s = "hello ";
String s1 = s + b;	// 结果:“hello true”

// 字符之间的运算会转换为ASCII码值进行运算
// 字符与字符串之间 + 执行连接运行
System.out.println('*' + '\t' + '*');   // + 加法  + 加法   96
System.out.println('*' + "\t" + '*');   // + 连接  + 连接   *   *
System.out.println('*' + '\t' + "*");   // + 加法  + 连接   51*
System.out.println('*' + ('\t' + "*")); // + 连接  + 连接   *   *
posted @ 2023-01-27 20:50  msuenb  阅读(49)  评论(0编辑  收藏  举报