一、字面量
字面量:程序中直接写出来、固定不变的数据,写在代码里直接就能使用。
各类字面量
| 字面量类型 | 写法示例 | 说明 |
|---|---|---|
| 整数字面量 | 20、0、‑88 | 不带小数点数字 |
| 浮点 (小数) 字面量 | 2.5、‑3.14 | 带小数点 |
| 字符字面量 | 'A'、'5'、'中' | 单引号包裹,只能 1 个字符 |
| 字符串字面量 | "Java"、"你好" | 双引号包裹,可以 0 个、多个字符 |
| 布尔字面量 | true、false | 只有这两个,代表真、假 |
| null 字面量 | null | 代表空值,用于引用类型 |
代码演示
public class Demo1Literal { public static void main(String[] args) { // 直接输出各类字面量 System.out.println(666); // 整数字面量 System.out.println(2.718); // 小数字面量 System.out.println('Z'); // 字符字面量,单引号 System.out.println("Java初学者"); // 字符串字面量,双引号 System.out.println(true); // 布尔字面量 } }⚠易错:字符只能单引号,只能写一个;字符串只能双引号。
'abc'是错误写法。
二、变量的定义
变量:内存中存储数据的容器,里面的值在程序运行时可以修改。
1、完整语法格式
格式 1:先声明,再赋值
数据类型 变量名; 变量名 = 值;格式 2:声明同时直接赋值(最常用)
数据类型 变量名 = 值;2、代码示例
public class Demo2Variable { public static void main(String[] args) { // 方式1:定义变量直接赋值 int age = 19; double height = 175.5; // 方式2:先定义,后赋值 String name; name = "小李"; // 修改变量存储的值,覆盖旧数据 age = 20; System.out.println(name); System.out.println(age); System.out.println(height); } }3、变量使用注意事项
- 变量必须赋值之后才能读取使用,只声明不赋值直接打印会编译报错。
- 在同一个大括号内,不能定义同名变量。
- 变量赋值的数据必须和定义的数据类型匹配。
//错误示范 /* int num; System.out.println(num); //报错,没有赋值 int num = 100; //报错,重复定义同名变量 */三、变量的数据类型
Java 属于强类型语言,每一个变量都必须指定数据类型。 数据类型分为两大类:8 种基本数据类型、引用数据类型。
3.1 八种基本数据类型
| 类型 | 字节大小 | 取值范围 |
|---|---|---|
| byte | 1 字节 | -128 ~ 127 |
| short | 2 字节 | -32768 ~ 32767 |
| int | 4 字节 | -2147483648 ~ 2147483647(整数默认 int) |
| long | 8 字节 | 超大整数,书写数值末尾加L |
| float | 4 字节 | 单精度浮点数,数值末尾加F |
| double | 8 字节 | 双精度浮点数,小数默认 double |
| char | 2 字节 | 存储单个字符 0~65535 |
| boolean | 1 字节 | 只有true/false |
代码演示
public class Demo3DataType { public static void main(String[] args) { byte b = 120; short s = 30000; int i = 100000; long l = 9999999999L; // long类型末尾必须加L float f = 3.14F; // float末尾必须加F double d = 5.66; char ch = '王'; boolean flag = false; System.out.println(b); System.out.println(l); System.out.println(f); System.out.println(ch); System.out.println(flag); } }重点:整数默认
int;小数默认double;写 long 要加 L,写 float 要加 F。
3.2 引用数据类型
String字符串就是最常用引用类型,类、数组都属于引用类型。
String str = "我是字符串";四、变量的类型转换
分为自动类型转换(隐式)、强制类型转换(显式)。
4.1 自动类型转换
条件:小范围类型 → 大范围类型,自动完成,不会丢失数据。 从小到大顺序:byte→short→int→long→float→double
public class Demo4Convert { public static void main(String[] args) { int a = 50; double b = a; // int自动转double System.out.println(b); //输出50.0 short num1 = 200; int num2 = num1; // short自动转int System.out.println(num2); } }4.2 强制类型转换
条件:大范围转小范围,必须手动写代码,可能丢失精度、数据溢出。 语法:目标类型 变量 = (目标类型)原数据;
public class Demo4Convert { public static void main(String[] args) { double pi = 3.99; //强制把double转为int,直接舍弃小数部分 int num = (int) pi; System.out.println(num); //输出3,小数直接丢掉 long bigNum = 10000; int smallNum = (int) bigNum; System.out.println(smallNum); } }⚠警告:强制转换有风险,数值超出目标类型范围会得到错误数据。
五、变量的作用域
作用域:变量能够生效、可以被访问到的代码范围,由大括号{}决定。出了所属大括号,变量直接失效,不能再使用。
1. 局部变量
定义在方法内部的变量,属于局部变量。 作用域:从定义行开始,到它所在的大括号结束为止。
public class Demo5Scope { public static void main(String[] args) { //局部变量,在main方法大括号内 int a = 10; if(true){ int b = 20; System.out.println(a); //a可以访问,外层变量对内层可见 System.out.println(b); } // System.out.println(b); //报错!b属于if的大括号,出括号失效 } }2. 成员变量
写在类里面、方法外面的变量。 作用域:整个类,类中所有方法都可以访问。
public class Demo5Scope { //成员变量,类里面,方法外面 static int memberVar = 888; public static void main(String[] args) { System.out.println(memberVar); //可以直接使用成员变量 } }核心口诀:变量属于哪个大括号,就只能在那个大括号里面用。
本章小结
- 字面量:代码直接写的固定数据,区分单引号字符、双引号字符串。
- 变量:存储可变数据,定义必须写类型,使用前要赋值。
- 8 种基本数据类型,记住字节大小;long 加 L,float 加 F。
- 自动转换小转大;强制转换大转小,会丢失精度。
- 作用域由大括号控制,出括号变量失效。