下载工作台
Java 编程实战

变量、基本类型与运算符

试读上半部分 · 解锁后可读全文

第 2 章 · 变量、基本类型与运算符

本章目标:掌握 Java 静态类型变量声明与命名规范;熟练使用 8 种基本类型及 String 引用;理解 自动装箱/拆箱null;掌握算术、比较、逻辑、位运算与赋值运算符;能进行显式/隐式类型转换;编写 toolkit-demo 中的价格计算示例,并与 python-dev ch02 对照。

学时建议:3~4 小时(含 1 小时跟练)

前置:完成 java-dev ch01,能编译运行 HelloWorld;建议已学 python-dev ch02


2.1 场景说明:toolkit-demo 商品计价

toolkit-demo 需要一个小模块计算虚构商品「学习套件」的单价、数量与小计,逻辑类似 python-dev 中 shop-demo 脚本的价格计算,但 Java 必须在编译期确定类型。

字段Java 类型Python 对照
商品名Stringstr
单价doubleBigDecimal(进阶)float
数量intint
是否促销booleanbool
小计double动态 float
learn-java/toolkit-demo/src/main/java/demo/pricing/
  └── PriceCalculator.java    # 本章主练习

2.2 变量与命名

Java 变量必须先声明类型再使用(局部变量)。

String productName = "Java 学习套件";
int quantity = 3;
double unitPrice = 89.5;
boolean onSale = true;
规则说明示例
合法字符字母、数字、_$userName
不能以数字开头编译错误2price
区分大小写Priceprice
风格变量/方法 camelCasetotalAmount
类名PascalCasePriceCalculator
常量UPPER_SNAKE + finalMAX_QUANTITY
final int MAX_QUANTITY = 99;
int a = 1, b = 2, c = 3;  // 同类型可一行声明

与 Python 对比:Python x = 10 运行时绑定类型;Java int x = 10 类型在编译期固定,赋值 x = "hi" 会编译失败。


2.3 基本数据类型

类型字节范围/说明默认值(成员变量)
byte1-128~1270
short2±3 万0
int4常用整数0
long8后缀 L0L
float4后缀 f,精度低0.0f
double8默认浮点0.0d
char2单字符 'A''\u0000'
booleantrue/falsefalse
int stock = 100;
long big = 9_000_000_000L;      // 下划线提高可读性(Java 7+)
double price = 19.9;
float rate = 0.15f;
char grade = 'A';
boolean inStock = stock > 0;

2.3.1 引用类型与 null

除 8 种基本类型外,其余均为引用类型(类、接口、数组、String)。

String title = "toolkit-demo";
String empty = null;   // 仅引用可为 null
// int n = null;        // 编译错误
PythonJava
Nonenull(引用)
一切是对象基本类型不是对象

2.3.2 包装类与自动装箱

Integer boxed = 42;        // 自动装箱 int → Integer
int unboxed = boxed;       // 自动拆箱
Integer maybe = null;
// int bad = maybe;         // 运行时空指针 NPE

常用包装:IntegerLongDoubleBooleanCharacter


2.4 String 初识(ch04 深入)

String shop = "示例书店";
String msg = shop + ":欢迎学习 Java";   // 拼接
String formatted = String.format("单价 %.2f 元", 19.9);
对比PythonJava
格式化f"{x:.2f}"String.format 或 ch04 的 formatted
可变字符串无特殊要求大量拼接用 StringBuilder(ch04)

2.5 运算符

2.5.1 算术运算符

int a = 10, b = 3;
int sum = a + b;       // 13
int mod = a % b;       // 1
double div = (double) a / b;  // 3.333... 整数除法 a/b 为 3
运算符说明注意
+ - * / %算术/ 两 int 为整除
++ --自增自减前缀/后缀语义不同

2.5.2 比较与逻辑

boolean ok = (price >= 0) && (quantity > 0);
boolean flag = !onSale;
boolean either = (a == 0) || (b == 0);
运算符说明
== !=基本类型比较值;引用比较地址(String 用 equals
> < >= <=比较
&& `\\ !`逻辑与、或、非
& `\ ^ ~`位运算

String 比较

String s1 = "java";
String s2 = new String("java");
System.out.println(s1 == s2);        // false(地址)
System.out.println(s1.equals(s2));   // true(内容)

2.5.3 赋值与复合赋值

quantity += 2;
price *= 0.9;   // 促销 9 折

2.6 类型转换

2.6.1 隐式 widening(拓宽)

小范围类型可自动转为大范围:

int i = 100;
long l = i;        // OK
double d = l;      // OK
byte → short → int → long → float → double
         char → int

以下内容需解锁后阅读

试读已结束。解锁本章 ¥5.00,或开通年度会员畅读全部教程。
年度会员 ¥199.00/年; 小紫 AI 工作台有效会员 ¥99.00/年

正文仅在服务端鉴权后下发,未付费无法获取下半部分内容。