数据类型与转换

Java 是一种强类型语言, 变量需要定义后才能使用.

数据类型

基本数据类型

屏幕截图 2026-03-08 214738

整数byteshortintlong (long 类型须在数字后加L) .

​ 分别占用 1B, 2B, 4B, 8B.

浮点数floatdouble (float 类型须在数字后加 F) .

​ 分别占用 4B, 8B.

​ 需注意: float 有舍入误差,需避免使用 float 进行比较.

字符charString (String 不是关键字, 是一种引用类型) .

​ char 使用单引号, 而 String 使用双引号.

char letter1 = 'A';
String letter2 = "B";

布尔值boolean.

​ 表示 "是" 与 "非".

boolean flag = ture;
if(flag == ture){}
if(flag ==) {}//这种写法更常用.

进制

进制 前缀
二进制 0b
八进制 0
十进制 -
十六进制 0x
char character = 'A';
System.out.println((int)character);//加上int可以打印出字符的Unicode编码.(强制转化)

类型转换

由于 Java 是强类型语言, 需要进行类型转化 (将不同类型转为相同类型) .

屏幕截图 2026-03-10 231023

强制转换

手动转换.

格式: (类型)变量名

int a = 128;
byte b = (byte) a;

运算中只要有一个变量被转换了, 其他的也会一同被转换.

自动转换

自动转换.

int a = 128;
double b = a;

注意

  1. 布尔值不可以参与转换.

  2. 不可以转换成不相干的类型.

  3. 转换中可能会出现内存溢出和精度问题.

System.out.println((int) 12.3); //打印12, 丢失精度.
System.out.println((byte) 128);//打印-128, 内存溢出.

操作大数目时, 需要注意内存溢出.

int num1 = 10_0000_0000;
int num2 = 20;
System.out.println(num1 * num2); //由于内存溢出, 输出-1474836480.
long sum = num1 * (long) num2;//进行一处类型转换.
System.out.println(sum);//顺利打印出20000000000.

变量和常量

变量

Java 的每个变量必须声明其类型后才能使用.

变量是程序中最基本的单元, 包括变量名变量类型作用域.

使用 类型 变量名 [=值] 进行定义,可以用逗号隔开以声明多个同类型的变量 (不建议) .

int a = 1, b = 2, c = 3;//为了程序可读性, 不要一行定义多个变量!

变量作用域

局部变量

只能在一个方法里面使用, 必须声明和初始化

​ 方法: 如有public static void main(String[] args), 则有 main方法.

实例变量

从属于对象.

public class Demo {
    int num = 23;
    String char1 = "abc";

    public static void main(String[] args) {
        Demo Demo = new Demo();//new就是在内存中开辟了一块空间,可以对里面的数据进行操作. 
        System.out.println(Demo.num);//打印23.
        System.out.println(Demo.char1);//打印abc.
    }
}

如不初始化, 则会输出默认值 (0, 0.0, ect.)

布尔值的默认值为 false.

除了基本类型, 其他类型默认值均为 null.

类变量

从属于类, 使用 static 进行定义.

static 是一种修饰符, 修饰符不区分前后顺序.

public class Demo {
    static int num = 23;

    public static void main(String[] args) {
        System.out.println(Demo.num);//不需要new便能成功执行.
    }
}

常量

初始化后不能改变值, 可视作一种特殊的变量, 使用final进行定义.

final 也是一种修饰符.

常量名称一般使用大写字母.

命名规则

所有变量, 方法, 类名, 都需要遵循见名知意原则.

类型 大小写 驼峰原则
类成员变量 首字母
局部变量 首字母
常量 全部大写, 使用 _ 分割 -
类名 首字母
方法名 首字母

驼峰原则: 除了第一个单词, 每个单词首字母大写.

运算符

名称类型 符号
算数运算符 +-*/%++--
赋值运算符 =
关系运算符 ><>=<===!=instanceof
逻辑运算符 &&, `
位运算符 &, `
条件运算符 ?:
扩展赋值运算符 +=-=*=/=

一元运算符只需要一个操作数, 二元, 三元也同理.

运算优先级: 括号最优先, 其次是一元运算符 (多使用括号养成良好习惯).

算数运算符

加, 减, 乘, 除, 模

+-*/% (模运算, 取余).

  1. 当不同类型一同运算时, 结果的类型取决于最高的类型. 如:

  2. 当结果会出现小数, 需要对结果进行强制转换, 否则只会出现整数.

long a = 100L;
int b = 10;
short c = 1;
System.out.println( a + b + c);//里面是long类型
System.out.println(b + c);//里面是int类型
System.out.println(c / b);//打印0
System.out.println((double) c / b);//打印0.1   

如果+的前面有 String 类型, + 则变成字符串连接运算符,负责把多个字符串连接起来.

System.out.println(10 + 20);//打印30
System.out.println("Hello" + 10 + 20);//打印Hello1020
System.out.println(10 + 20 + "Hello" + 25);//打印30Hello25, 前面的会被运算

需要注意, 在字符串连接运算符前面的式子会先被计算.

自增自减

++ (自增), -- (自减). 两个都是一元运算符.

n++n--(先数字, 后符号): 先执行, 后自增/减.

++n--n (先符号, 后数字): 先自增/减, 后执行.

int a = 1, b = 1;
int result1 = a++;//a=1---先为result1赋值, 然后才自增
int result3 = a;//a=2
int result2 = ++b;//b=2---先给自己自增, 再给result2赋值
int result4 = b;//b=2

比较运算

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐