Java 基础-02
1.变量
所谓变量,就是可以进行变化的量。
Java是一种强类型语言,每个变量都必须声明其类型。
Java变量是程序中最基本的存储单元,其要素包括:变量名,变量类型和作用
1.1为什么使用变量
- 我们用来保存,一些会根据时间的推移,数据值会产生变化的东西,因为他发生变化,所以我们用一个变量来标识他,通俗的理解是,变量,一个进行变化的量值,它的名称不变,值在变
1.2数据类型
- java数据分为两大数据类型 1.基本数据类型 2.引用数据类型
- 基本数据类型分为8种:
- byte 字节型
- short 短整型
- int 整数型
- long 长整型
- boolean 布尔型
- char 字符型
- float 单精度浮点数
- double 双精度浮点数
- 1.浮点数在机器中存放形式的简单形式(符尾位 + 指数位 + 尾数位)
2.尾数部位可能丢失,造成精度损失(小数都是近似数)
-
引用数据类型分为:
- String 字符串,保存一串字符,可以是任何符号,数字,字母或中午,要使用双引号标记(“(内容)”)
- 类(class)
- 接口(…)
- 数组([])
2.声明变量
1.声明变量:通知计算机,要在内存中开辟指定类型的数据空间,即在内存中为数据事情一个大小合适的“房间”,并为其取一个别名
//先声明后赋值(初始化) //无法格式: // 数据类型 变量名; // 变量名 = 数值; // 例如: String name; name = "666"; int num; num = 123; //声明变量的同时赋值(初始化) //语法格式: // 数据类型 变量名 = 数值; // 例如: String name = "lin"; // 名字 int num = 18; // 年龄 double money = 1000.01 // 存款 boolean true = false; // 真假,true是真,false是假 //变量的使用: // 变量进行第二次变量 String name1 = name; // 把 lin 的值赋值给 name1 // 变量相加 1 int newNum = 1+ name; // 给 lin 的年龄增加1岁 // 变量相加 2 int newNum2 = newName + name; // 把name + newName保存到newNum2变量中 // 在输出语句种使用 System.out.println(newName); // 输出年龄 System.out.println("lin的年龄:"+ newNum2); //加上提示语,输出年龄
3.命名的规范
当一个变量名由一个或多个单词连接组成时,变量名应遵守“骆驼命名法”,即第一个单词的首字母小写,其后单词首字母大写,如myFirstName,myLastName,这样的变量名看上去就像骆驼峰一样此起彼伏,因此这种命名方式被称为“骆驼命名法”(也被称为“驼峰命名法”)。
- 变量名不可以用符号和数字开头,可以用“_”和“$”符号
- 变量名不能使用Java本身定义的关键字,如int,public,class等
- 变量名需要区分大小写
4.变量常见错误
- 变量在使用前没有被初始化
- Java中的局部变量在使用前必须被初始化,否则编译的时候无法通过。
//示例
public class HelloWord{
public static void main(String[] args){
String name;
System.out.println(name); //编译错误:变量在使用前没有被赋值,应加上 name = "名字"; 或 一步过 String name = "名字"
}
}
5.常量
常量一般用来声明一些固定的值,如一天有24小时,一分有64秒等。
-
常量的定义:
- 经常使用,且固定不变的值,我们使用常量来声明,如:一年的月份 是12个月
-
特点:
- 常量使用时必须在声明的时候就初始化值
- 常量的值,不允许再进行更改
-
语法:
- final 数据类型 常量名
final int day = 24;
6.运算符
算术运算符主要用于进行数学运算
关系运算符用于进行数据的大小比较,返回的结果是boolean类型数据(只有true和false两种取值,true为真,false为假)
注意:关系运算符“==”和赋值运算符“=” 前者是比较符号,比较左右两边的数据是否相等,而后者是把符号“=”右边的数据赋值于左边的变量。int num = 10; // 表示将右侧的数值 10 赋值给左边的变量 num == 10; // 表示判断变量num的值是否为 10 ,如果成立则表达式值为真;否则为假
-
算术运算符
- 加法运算符 +
5 + 5 等于 10
- 减法运算符 -
10 - 5 等于 5
- 乘法运算符 *
2 * 5 等于 10
- 除法运算符 /
10 / 2 等于 5
- 求余运算符 %
11 % 5 等于 1
- 自加运算符 ++
int num = 10; num++;即 num = num + 1
- 自减运算符 –
int num = 10; num--;即 num = num - 1
- 加法运算符 +
-
关系运算符
- 大于 >
a > b 成立,则为真,反之假
- 小于 <
a < b 成立,则为真,反之假
- 大于等于 >=
a >= b 成立,则为真,反之假
- 小于等于 <=
a <= b 成立,则为真,反之假
- 等于 ==
a == b 成立,则为真,反之假
- 不等于 !=
a != b 成立,则为真,反之假
7.控制台的输入
用于接收控制台输入的内容
使用步骤如下: - 大于 >
// 1. 创建一个人Scanner 控制台扫描器
Scanner input = new Scanner(System.in);
// 2. 打印一个提示语句
System.out.println("请输入名字");
// 3. 获取控制台输入的内容
// 3.1 input.nextInt() -- 代表或取到的内容是String类型的数据值
String name = input.next();
System.out.println("请输入年龄:");
// 3. 2 input.nextInt() -- 代表或取到的内容是Int类型的数据值
int num = input.nextInt();
System.out.println("请输入存款:");
// 3. 3 input.nextDouble() -- 代表或取到的内容是double类型的数据值
int num = input.nextDouble();
8.数据类型转换
介绍 自动类型转换
当java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型,这个就是自动转换类型。
数据类型按精度(容量)大小排序为:
char–>int–>long–>folat–>double
byte–>short–>int–>long–>folat–>double
- 自动类型转换注意和细节 :
- 细节 1:
有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后在进行计算 - 细节 2:
当我们把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时,就会报错,反之就会进行自动类型转换 - 细节 3:
(byte,short) 和 char 之间不会相互自动转换,当把具体数赋值给byte时,(1)先判断该数是否在byte范围内,如果是就可以 - 细节 4:
byte,short,char 他们三者可以计算,在计算时首先转换为int类型 - 细节 5:
boolean 不参与类型的自动转换 - 细节 6:
自动提升原则:表达式结果的类型自动提升微 操作数中最大的类型
- 细节 1:
介绍 强制转换
自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型.使用时要加上强制转换符(),但可能造成精度降低或溢出,格外要注意.
如:
int n1 = (int)1.9;
System.out.println(n1); // 输出 1 ,造成精度损失
或
int n2 = 2000;
byte b1 = (byte)n2;
System.out.println(b1); // 输出 -48 ,造成数据溢出
- 自动类型转换注意和细节 :
- 细节 1:
当进行数据的大小从 大 --> 小,就需要使用强制转换. - 细节 2:
强转符号() 只针对于最近的操作性有效,往往会使用小括号提升优先级.
错误示范 :
int x = (int)10*3.5 + 6*1.5; //编译失败 : double -> int 会有损失
正确示范 :
int x = (int)(10*3.5 + 6*1.5); //(int)44.0 -> 44 输出结果 : 44
- 细节 3:
byte,short 和 char 类型在进行运算时,当做 int 类型处理。 - 细节 4:
char类型可以保存int的常量值,但不能保存int的变量值,需要强转
- 细节 1:
示范:
char c1 = 100; // 正确
int m = 100; // 正确
char c2 = m; // 错误
char c3 = (char)m; // 正确
System.out.println(c3); // 输出100对应的字符“D”