Java 数据类型和变量详解

一、变量是什么?

比喻:变量就像是一个储物盒,用来存放数据。每个盒子有名字(变量名)和类型(能装什么)。

示例

一、变量是什么?
比喻:变量就像是一个储物盒,用来存放数据。每个盒子有名字(变量名)和类型(能装什么)。

示例:
二、数据类型:盒子的“规格”

Java 的数据类型分为两类:

  1. 基本数据类型:直接存具体数值(如数字、字符)。
  2. 引用数据类型:存的是对象的“遥控器”(内存地址)。

1. 基本数据类型(8种)
类型大小范围/示例默认值
byte1字节-128 ~ 1270
short2字节-32768 ~ 327670
int4字节-21亿 ~ 21亿0
long8字节-9e18 ~ 9e180L
float4字节小数(如 3.14f)0.0f
double8字节更精确的小数(如 3.14)0.0d
char2字节单个字符(如 'A' 或 '\u0041')'\u0000'
boolean1位true 或 falsefalse

示例

byte score = 90;          // 小整数用 byte
int population = 1400000000; // 常用整数用 int
double price = 19.99;     // 小数用 double
char grade = 'A';         // 单个字符
boolean isPassed = true;  // 布尔值表示是否通过

整型家族对比表

类型字节范围示例
byte1-128 ~ 127byte b = 100
short2-32768 ~ 32767short s = 20000
int4-2³¹ ~ 2³¹-1(约±21亿)int i = 2147483647
long8-2⁶³ ~ 2⁶³-1long l = 100L
public class IntegerDemo {
    public static void main(String[] args) {
        // long类型必须加L后缀
        long population = 7800000000L;  // 78亿
        
        // 查看int的最大值
        System.out.println(Integer.MAX_VALUE);  // 2147483647
        
        // 错误示例:超出范围
        // int error = 2147483648;  // 编译报错
    }
}

2. 浮点型

对比表

类型字节特点示例
float4单精度,后缀F/ffloat f = 3.14F
double8双精度(默认)double d = 3.14

代码示例

public class FloatDemo {
    public static void main(String[] args) {
        // float必须加F后缀
        float pi = 3.1415926F;
        
        // 科学计数法
        double atom = 1.67e-27;  // 1.67×10⁻²⁷
        
        // 精度问题演示
        System.out.println(1.1 * 1.1);  // 输出1.2100000000000002
    }
}
3. 字符型(char)

特点

  • 用单引号包裹单个字符
  • 支持Unicode(包括中文)
  • 本质是16位无符号整数(0~65535)

代码示例

public class CharDemo {
    public static void main(String[] args) {
        char c1 = 'A';          // 英文字符
        char c2 = '中';         // 中文字符
        char c3 = '\u0041';     // Unicode表示(A)
        
        System.out.println(c1);  // A
        System.out.println((int)c1);  // 65(ASCII码)
    }
}
  4. 布尔型(boolean)

特点

  • 只有truefalse两个值
  • 不能与整数转换(与C语言不同)

代码示例

public class BooleanDemo {
    public static void main(String[] args) {
        boolean isRaining = true;
        boolean hasLicense = false;
        
        // 错误示例:与整数混用
        // if (1) { ... }  // Java中不允许
    }
}
5. 引用数据类型

比喻:引用类型变量是“遥控器”,指向实际对象(如电视机)。
常见类型

  • String(字符串)、数组、类(如 Scanner)、接口等。

示例

String message = "Hello World";  // 字符串
int[] numbers = {1, 2, 3};       // 数组
Scanner input = new Scanner(System.in); // 对象
三、变量的声明与初始化
1. 声明变量

语法:数据类型 变量名;

int age;        // 声明一个整数变量 age(未初始化)
String name;    // 声明一个字符串变量 name(未初始化)
2. 初始化变量

语法:数据类型 变量名 = 值;

int age = 25;                   // 声明并初始化
double price = 19.99;          // 小数初始化
char firstLetter = 'J';        // 字符初始化
boolean isStudent = true;       // 布尔值初始化
String greeting = "你好!";     // 字符串初始化

注意:未初始化的变量不能直接使用!

int count;
System.out.println(count); // 编译错误:变量未初始化!
3. 变量作用域
public class ScopeDemo {
    // 成员变量(类内有效)
    int global = 100;
    
    public void method() {
        // 局部变量(方法内有效)
        int local = 50;
        System.out.println(global);  // 正确
    }
    
    public void anotherMethod() {
        // System.out.println(local);  // 错误!
    }
}
四、类型转换
1. 自动类型转换(小转大)

小范围类型 → 大范围类型(无数据丢失)。

public class AutoConvert {
    public static void main(String[] args) {
        int a = 100;
        double b = a;  // int→double(安全)
        
        char c = 'A';
        int d = c;     // char→int(输出65)
    }
}
转换方向byte → short → int → long → float → double
2. 强制类型转换(大转小)

语法:(目标类型) 值(可能丢失数据)。


public class ForceConvert {
    public static void main(String[] args) {
        double price = 99.99;
        int intPrice = (int)price;  // 强制转换(输出99)
        
        // 数据溢出示例
        byte overflow = (byte)200;  // 输出-56(溢出)

        double price = 19.99;
        int intPrice = (int) price; // 强制转 int,得到 19(丢失小数部分)

    }
}

五、常量:不可变的盒子

用 final 修饰,值一旦设定不能修改。
命名规范:全大写字母,单词间用下划线分隔。

final double PI = 3.14159;       // 常量 PI
final int MAX_SCORE = 100;       // 常量 MAX_SCORE
// PI = 3.14; // 错误!常量不能重新赋值

六、 关键注意事项

变量必须先初始化:

int x;
// System.out.println(x);  // 编译错误
浮点数比较:

double a = 0.1 + 0.2;
double b = 0.3;
System.out.println(a == b);  // false(应判断差值是否<0.00001)
类型溢出:

int max = Integer.MAX_VALUE;
System.out.println(max + 1);  // -2147483648(最小值)
字符与字符串区别:

char c = 'A';        // 字符
String s = "A";      // 字符串
// char error = 'AB'; // 编译错误

七、代码示例:综合应用
public class DataTypeDemo {
    public static void main(String[] args) {
        // 基本类型示例
        int age = 20;
        double height = 1.75;
        char gender = '男';
        boolean isMarried = false;

        System.out.println("年龄:" + age);
        System.out.println("身高:" + height + "米");
        System.out.println("性别:" + gender);
        System.out.println("婚否:" + isMarried);

        // 引用类型示例
        String hobby = "打篮球";
        int[] scores = {90, 85, 88};
        System.out.println("爱好:" + hobby);
        System.out.println("分数:" + scores[0]); // 输出第一个分数 90

        // 类型转换示例
        double price = 19.99;
        int intPrice = (int) price; // 强制转换
        System.out.println("价格整数部分:" + intPrice); // 输出 19
    }
}

总结 

  1. Java的8种基本数据类型及其使用场景
  2. 变量的声明、初始化和作用域规则
  3. 类型转换的两种方式及注意事项
  4. 常见错误及解决方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值