[从零开始学Java] 基础语法 (二)
一. 数据类型
| 数据类型 | 占用存储控件 | 表数范围 | 备注 |
|---|---|---|---|
| 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 | long常量后面必须加l(小写L)或L |
| float | 4字节 | -3.403E38 ~ 3.403E38 | float常量后面必须加f或F |
| double | 8字节 | -1.798E308 ~1.798E308 | |
| char | 2字节 |
二. 数据类型转换
1.自动数据类型转换
(1). 如果一个操作数为 double 型,则整个表达式可提升为 double 型
(2). 满足自动类型转换的条件
(2.1) 两种类型要兼容:数值类型(整型和浮点型)互相兼容。
(2.2) 目标类型大于源类型:double型可以存放int型数据,因为double型变量分配的空间宽度足够存储int型变量,因此,我们也把int型变量转换成double型变量形象地成为“放大转换”、
2.强制类型转换
byte, short, char -> int -> long -> float -> double
byte, short, char 在进行运算时会先转换成 int 类型
byte b1 = 1, b2 = 3, b3 = 129; // 报错, 129 超出byte表数范围 byte b4 = (byte)(b1 + b2); // byte 运算会先转换为int, b1 + b2 的运算后的结果为 int 类型,需要强制转换为 byte 才能赋值给 b4 char c1 = 'a', c2 = 1; char c3 = (char)(c1 + c2); // char 运算会先转换为int, 所以计算后的值需要强制转换为 char 赋值给 c3 double d1 = 1234.56; double d2 = 1.23E50; float f1 = (float)d1; // double 转换为 float float f2 = (float)12.3; float f3 = 12.3f; // float 常量后面需要加 f float f4 = (float)d2; // 超出float表述范围,f4 为无限大 long l1 = 123; long l2 = 123456789000L; // long 常量后面需要加 L
强制类型转换往往是从宽度大的类型转换成宽度小的类型,使数值损失了精度,因此可以形象地称这种转换为"缩小转换"
三. 变量的声明及使用
1.程序运行的过程中,将数值通过变量加以存储,以便程序随时使用,整个步骤如下:
(1). 根据数据的类型在内存中分配一块内存空间,并给它起名,即“变量名”.
(2). 将数据存储到这块内存中
(3). 通过变量名从内存中取出数据使用
2.如何定义和使用变量
(1). 声明变量,即“根据数据类型在内存中申请一块空间”
(2). 给变量赋值,即“将数据存储至相应的内存空间”
//语法 变量名 = 值; //例如: double score = 98.5; // 存储 98.5 String name = "张三"; // 存储 “张三” char sex = '男'; // 存储 '男'
(3). 调用变量
System.out.println(score); //从控制台输出变量 score 存储的值 System.out.println(name); //从控制台输出变量 name 存储的值 System.out.println(sex); //从控制台输出变量 sex 存储的值
使用声明的变量名,就是在使用变量对应的内存空间中存储的数据
变量都必须先声明和赋值后才能使用
示例:
public class MyVariable { public static void main(String[] args) { int money = 1000; //定义并初始化变量money的值 System.out.printfln(money); //显示存储的数据的值 } }
四. 变量命名规则
1. 变量必须以字母、下划线 “_” 或 “$” 符号开头.
2. 变量可以包括数字,但不能以数字开头.
3. 除了 "_" 或 "$" 符号外,变量名不能包含任何特殊字符.
4. 不能用Java语言的关键字,比如 int、class、public 等.
规范:
变量名要简短且能清楚地表明变量的作用,通常第一个单词的首字母小写,其后单词的首字母大写。例如:
五. 常见错误
1. 变量未赋值先使用
上面这段代码,由于未赋值就使用,编译器会提示编译错误。
排错方法:使用前要给变量赋值
2. 使用非法的变量名
上面这段代码,由于变量名不符合规则,编译时编译器将提示错误
排错方法:修改不合法的变量名
3. 变量名不能重名
上面这段代码,由于变量名重复,编译时会提示“局部变量 name 重复”
排错方法:修改使用两个不同的变量名来存储
六. 运算符与输入语句
1. 赋值运算符 "=" "="可以将某个数值赋给变量,或是将某个表达式的值赋给变量
2. 算术运算符
| 运算符 | 说明 | 举例 |
| + | 加法运算符,求操作数的和 | 5+3 等于 8 |
| - | 减法运算符,求操作数的差 | 5-3 等于 2 |
| * | 乘法运算符,求操作数的乘积 | 5*3 等于 15 |
| / | 除法运算符,求操作数的商 | 5/3 等于 1 |
| % | 求余运算符,求操作数相除的余数 | 5%3 等于 2 |
示例:
import java.util.Scanner; public class ScoreStat { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("STB的成绩是:"); int stb = input.nextInt(); // STB 分数 System.out.println("Java的成绩是:"); int java = input.nextInt(); // Java 分数 System.out.println("SQL的成绩是:"); int sql = input.nextInt(); // SQL 分数 int diffen; // 分数差 double avg; // 平均分 System.out.println("------------------------------"); System.out.println("STB\tJava\tSQL"); System.out.println(stb + "\t" + java + "\t" + sql); System.out.println("------------------------------"); diffen = java - sql; // 计算 Java 课和SQL课的成绩差 System.out.println("Java 和 SQL 的成绩差:" + deffin); avg = (stb + java + sql) / 3; //计算平均分 System.out.println("3 门课的平均分是:" + avg); } }
3. 从控制台输入一个整数
这两行代码做的事情就是通过键盘的输入得到STB的成绩。这里获取的是整型变量,所以调用nextInt()方法。如果获取的是字符型变量,需要调用next()方法。
使用该功能,需要在Java源代码中导入相应的包:
4. 自增自减运算符
自加运算符 ++
自减运算符 --
例如:
这里,"num1++" 等价于 "num1 = num1 + 1", "num--" 等价于 "num2 = num2 - 2"
七. 总结
1. 变量时一个数据存储空间的表示,它是存储数据的基本单元.
2. Java中常用的数据类型有整型(int) 、双精度浮点型(double) 、字符型(char) 和 字符串型(String).
3. 变量要先声明并赋值,然后才能使用.
4. Java提供各种类型的运算符,具体如下
(1). 赋值运算符 (=) .
(2). 算术运算符(+ 、- 、* 、/ 、%) .
5. 数据类型转换时为了方便不同类型的数据之间进行运算.
6. 数据类型转换包括自动类型转换和强制类型转换,发生自动类型转换必须符合一定的条件.
7. Java 提供 Scanner 类可以实现从控制台获取键盘输入的信息.

浙公网安备 33010602011771号