【JAVA入门】Day02 - 数据类型、标识符、运算符
文章目录
一、数据类型
Java中的数据类型如下表所示:
1.1 整数类型
在定义整数类型数据时,一定要注意他们各自的取值范围,byte只能取 -128 ~ 127,short只能取 -32768 ~ 32767,int 可以取10位数,long 可以取19位数。
值得注意的是,在定义long型数据时,数字后面要加个 L 或者 l 作为后缀,一般建议用大写字母。
//bytle
byte b = 10;
System.out.println(b);
//short
short s = 20;
System.out.println(s);
//int
int i = 128;
System.out.println(i);
//long
long n = 9999999999L;
System.out.println(n);
1.2 小数类型
在定义小数时,为了区分 float 和 double ,定义 float 类型变量时要在数据值后加一个 F 或 f 作为后缀,定义 double 就不需要了。
//float
float f = 1.23F;
System.out.println(f);
//double
double d = 9.999;
System.out.println(d);
1.3 字符类型
字符类型就是 char 类型,单个字符。
//char
char c = '中';
System.out.println(c);
1.4 布尔类型
布尔类型就是逻辑类型,只有 true 和 false 两种值。
//boolean
boolean o = true;
System.out.println(o);
1.5 整数和小数取值范围大小关系:
double > float > long > int > short > byte
二、标识符
标识符就是给类、方法、变量等起的名字。
在Java代码当中,我们起名不能随便起,需要遵守一些标识符命名规则。有些规则要求是硬性的,不这样做不行,有些是软性建议的。
2.1 硬性要求
- 由数字、字母、下划线(_)和美元符号($)组成,其他字符都不能出现。
- 不能以数字开头。
- 不能是关键字。
2.2 软性建议
软性建议是为了让你的代码更容易阅读而设立的规范。
- 小驼峰命名法: 方法、变量
规范1:标识符是一个单词的时候,全部小写。
name
规范2:标识符由多个单词组成的时候,第一个单词首字母小写,其他单词首字母大写。
firstName - 大驼峰命名法: 类名
规范1:标识符是一个单词的时候,首字母大写。
Student
规范2:标识符由多个单词组成的时候,每个单词的首字母大写。
GoodStudent - 所有标识符命名一定要记住——见名知意。
三、键盘录入
关于键盘录入,Java 帮我们写好了一个类叫 Scanner ,这个类就可以接收键盘输入。我们要使用它,需要:
- 步骤一:导包 —— Scanner 这个类在哪。
import java.util.Scanner;
- 步骤二:创建对象 —— 表示我要开始使用这个类了。
Scanner sc = new Scanner(System.in);
- 步骤三:接收数据。
int i = sc.nextInt();
四、运算符和表达式
运算符就是对字面量或者变量进行操作的符号,表达式就是用运算符把字面量或者变量连接起来,符合 Java 语法的式子。
int c = a + b;
- “+” 是运算符
- “a+b”是表达式
4.1 算术运算符
算术运算符就是加减乘除和取余数。
其中除法有细节,用整数除以整数是只能得到整数的(存在四舍五入),想要得到小数,就要用小数做除数或被除数。
10 / 3
10.0 / 3
取余运算实际上也是做除法运算,只不过得到的是余数。
【练习1】数值拆分:
键盘录入一个三位数,将其拆分为个位、十位、百位,打印在控制台。
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
//百位
System.out.println(i / 100);
//十位
System.out.println(i / 10 % 10);
//个位
System.out.println(i % 10);
4.1.1 加法的用法
加法有三种用法:
- 数字相加
- 字符串相加
- 字符相加
1.数字相加:
以一道例题为起点:
public class Test{
public static void main(String[] args){
int a = 10;
double b = 12.3;
c = a + b;
}
}
请问 c 是什么类型?
不同类型的变量相加,会自动转成一样的类型,才能运算。
- 隐式转换(自动类型提升):
- 把一个取值范围小的数值,转成范围大的数据,当你用 int 和 double 的数值相加时,double 比 int 取值范围大,所以 int 会被程序自动转成 double ,然后得到一个 double 的结果。
- 使用 byte short char 三种类型的数据在运算的时候,都会直接先提升为 int ,然后再进行运算。也就是说即使 byte a 加上 byte b ,也会自动转成 int 型的结果。
- 数据类型取值范围如下:
byte < short < int < long < float < double
- 显式转换(强制转换):
- 强制转换需要自己编写代码了。格式:
目标数据类型 变量名 = (目标数据类型)被强转的数据;
double a = 12.3;
int b = (int)a;
- 注意:如果数据比较大,强转时可能会溢出。比如 int 类型你强制转成 byte,超过128就出错了。
【练习2】强制转换。
byte b1 = 10;
byte b2 = 20;
byte c = (byte)(b1 + b2);
2.字符串相加:
当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算符了。它会将前后的数据进行拼接,产生一个新的字符串。
- 当进行“+”操作时,从左到右逐个执行。
1 + 99 + "昏"
结果是:
100昏
【练习3】字符串相加:
System.out.println(3.7 + "abc");
结果:
3.7abc
【练习4】字符串相加:
System.out.println("abc" + true);
结果:
abctrue
【练习5】字符串相加:
int age = 18;
System.out.println("我的年龄是" + age + "岁")
结果:
我的年龄是18岁
【练习6】字符串相加:
System.out.println(1 + 2 + "abc" + 2 + 1);
结果:
3abc21
3.字符相加
char 类型的字符相加,会先转成 int 再得到值。
字符加字符,或者字符加数字时,会把字符通过ASCII码表查询找到对应的数字再进行计算。
- 在ASCII码表中,小写的 a 对应的是 97 ,大写的 A 对应的是 65 。
【练习7】字符相加:
System.out.println(1 + 'a');
System.out.println('a' + "abc");
结果:
98
aabc
4.2 自增自减运算符:
自增运算符就是 ++ ,代表变量值加1;
自减运算符就是 – – ,代表变量值减1。
它们既可以写在变量前面,也可以放在变量后面。
int a = 10;
++a;
System.out.println(a);
结果:
11
4.2.1 先用后加
int a = 10;
int b = a++;
此时 b = 10,a = 11。这里是赋值完以后,a 再 ++ 。
4.2.2 先加后用
int a = 10;
int b = ++a;
此时 b = 11,a = 11。这里是先 ++ ,再赋值给b。
4.3 赋值运算符
赋值运算符就是赋值。有以下几种:
实际上,+= -= *= /= %= 都隐藏了一个强制类型转换。
int a = 10;
int b = 20;
a += b;
//等同于 a = (int)(a + b);
4.4 关系运算符
关系运算符一般是判断两个值的大小关系。
注意,关系运算符的结果都是boolean类型,要么是true,要么是false。
int a = 10;
int b = 10;
int c = 20;
System.out.println(a == b);
System.out.println(a == c);
结果:
true
false
4.5 逻辑运算符
逻辑运算符是在逻辑运算时使用的运算符。
还有一种逻辑运算符,叫短路逻辑运算符:
短路运算符就是把 & 和 | 双写,写成 && 和 || 。
这么做的意义就是,假如 && 前是一个 false,那么结果必然是 false,程序就不会判断 && 后的内容了;假如 || 前是 true,那么结果必然是 true,程序就不会判断 || 后的内容了。运行效率提高了。
4.6 三元运算符
三元运算符可以用来判断,根据判断的结果得到不同的内容。格式:
关系表达式 ? 表达式1 : 表达式2 ;
范例:求两个数的较大值。
int max = a > b ? a : b;
System.out.println(max);
若关系表达式结果为true,取左边的表达式;否则取右边的表达式。