JavaSE基础入门_002_Java语言基础
前置知识
-
什么是内存?
-
内存是瞬时状态下的储存空间,限制内存的原因:造价高、工业设计上的瓶颈。
-
-
JAVA虚拟机(JAVA程序)默认分配到的物理内存是1/8。
-
bit(位) -> Byte(字节) -> KB -> MB -> GB -> TB -> PB -> EB -> ZB -> YB -> BB -> NB ->DB -> CB -> XB
-
bit --> Byte 是 8进制,其他都是1024进制
-
变量的概念
-
概念: 计算机内存中的一块储存空间,是存储数据的基本单元。
-
整个内存就像是一个酒店,当中包含了多个房间
-
房间的类型有所不同(单人间、两人间……)
-
每个房间都有唯一的门牌号
-
每个房间的住客也不相同
-
-
酒店的房间——变量【组成如下:】
-
房间的类型——数据类型
-
房间门牌号——变量名
-
房间的住客——值
-
-
变量的定义流程:
-
声明:
-
数据类型 变量名;
-
int money; // 开辟整数变量空间
-
-
赋值:
-
变量名 = 值;
-
money = 100; // 将整数值赋给变量
-
-
-
注意:Java是强类型语言,变量的类型必须与数据的类型一致。
变量的定义方式
-
声明变量的3种方式
-
先声明,再赋值【常用】
-
数据类型 变量名;
-
变量名 = 值;
-
-
-
声明并赋值:【常用】
-
数据库类型 变量名 = 值;
-
System.out.println()//输出括号内的内容后换行
-
多个同类型变量的声明与赋值:【了解】
-
数据类型 变量1,变量2,变量3 = 值3 , 变量4, 变量5 = 值5;
-
注意:变量需要初始化【先赋值,再使用】;否则,会报错:尚未初始化。
数据类型
-
Java中的变量具有严格的数据类型区分。(强类型语言)
-
在Java语言中,任何一个值,都有其对应类型的变量。
Java中的数据类型:
基本数据类型 | 引用数据类型 |
---|---|
整数 | 字符串 |
小数 | 数组 |
布尔 | 对象 |
字符 |
-
二进制表现形式:
-
byte == 8 bit 0000 0000
例如:
十进制 二进制 1 0000 0001 3 0000 0011 5 0000 0101 7 0000 0111
-
数据类型 | 字节长度 |
---|---|
byte | 1 |
short | 2 |
int | 4 |
long | 8 |
int为整数的默认类型,long型数据 需要在数据后面带 L;例如:
long l = 2147483678L;
基本数据类型(小数/浮点数)
类型 | 字节长度 |
---|---|
float | 4 |
double | 8 |
科学计数法:
2E3 = 2 * (10 ^3) = 2000
注意:
-
double为浮点数的默认类型,如需为float类型,需要在值的后面追加“F”
-
float f = 3.43F
近似值:
-
float:4个字节 单精度
-
32bit 1bit符号位 8bits指数位 23bits尾数位
-
-
double:8个字节 双精度
-
64bit 1bit符号位 11bits指数位 52bits尾数位
-
布尔
类型 | 字节 | 取值范围 | 描述 |
---|---|---|---|
boolean | 1字节 | true/false | 仅可描述“真”或者“假” |
-
可直接赋值true/false
-
也可以赋值一个结果为true/false的表达式
-
注意:Java中的Boolean不能参与算数运算
字符型
类型 | 字节 | 取值范围(无符号数) | 描述 |
---|---|---|---|
char | 2字节 | 0~65535 | Unicode字符集(万国符) |
英文对应的ASCII编码;中文或其它国家语言对应Unicode编码。
-
Unicode字符集支持ASCII编码
-
Unicode中每个字符都对应一个十进制整数,从而可以使用多种方式赋值
-
字符赋值:char c1 = 'A';(通过''述为字符赋值)
-
整数赋值:char c2 = 65;(通过十进制65在字符集中对应的字符赋值)
-
进制赋值:char c3 = '\u0041';(通过十六进制【\u】41在字符集中对应的字符赋值)
-
转义字符
-
如果需要在程序中输出一个单引号字符,该如何完成?
转义字符 描述 \n 换行符 \t 缩进(制表符) \\ 反斜线 \' 单引号 \'' 双引号
引用数据类型(字符串)
类型 | 取值范围 | 字符编码 |
---|---|---|
String | 任何“ ”之间的字面值 | Unicode字符序列 |
-
String类型的字面取值:
String str = "你好";
类型转换
-
自动类型转换:
-
两种类型相互兼容。
-
目标类型大于源类型。
-
-
强制类型转换:
-
两种类型相互兼容
-
目标类型小于源类型
-
short s = 123;
byte b = (byte)s;
可能会丢失精度的情况:
【长度大的数据类型向长度小的强制转换】
-
小数强转为整数
double x = 12.34;
int y = (int)x;
//输出 y:12
-
整数强转为整数(大的往小的里面放)
short m = 258;
byte n = (byte)m;
//输出 n:2
-
强制类型转换规则:
-
整数长度足够,数据完整。
-
例如:
-
int i = 100; byte b = (byte)i; // b = 100;
-
-
整数长度不够,数据截断
-
例如:
-
int i = 10000; byte b = (byte)i; //b = 16 (符号位变化,可能变为负数)
-
-
小数强转整数,数据截断
-
例如:
-
double d = 2.5; int i = (int)d; // i = 2(小数位舍掉)
-
-
字符整数互转,数据完整
-
例如:
-
char c = 65; int i = c; //i = 65
-
-
boolean的取值为true/false,不可与其他类型转换。
表达式
-
使用运算符链接的变量或字面值,并可以得到一个最终结果。
-
例如:
-
1 + 2;
-
int a = 3; a - 2;
-
int b = 10; int c = 20; b*c; c / b;
-
short d = 100; int e = 200; d > e; d <= e;
-
自动类型提升
-
进行算术运算时:
-
两个操作数有一个为double,计算结果提升为double。
-
如果操作数中没有double,有一个为float,计算结果提升为float。
-
如果操作数中没有float,有一个为long,计算结果提升为long。
-
如果操作数中没有long,有一个为int,计算结果提升为int。
-
如果操作数中没有int,均为short或者byte,计算结果仍旧提升为int。
-
-
特殊:任何类型与String相加(+)时,实际为拼接,其结果自动提升为String。
运算符
-
算数运算符:两个操作数进行计算
-
操作符 描述 + 加、求和 - 减、秋茶 * 乘、求积 / 除、求商 % 模、求余
-
-
算数运算符:一元运算符(一元:只有一个操作数)
-
操作符 描述 ++ 递增、自增1 -- 递减、自减1
-
-
赋值运算符:等号右边赋值给等号左边
-
操作符 描述 = 直接赋值 += 求和后赋值 -= 求差后赋值 *= 求积后赋值 /= 求商后赋值 %= 求余后赋值
-
-
关系运算符:两个操作数进行比较
-
操作符 描述 > 大于 < 小于 >= 大于等于 <= 小于等于 == 等于 != 不等于
-
-
逻辑运算符:两个boolean类型的操作数或表达式进行逻辑比较
-
操作符 语义 描述 && 与(并且) 两边同时为真。结果为真 || 或(或者) 一边同时真。结果为真 ! 非(取反) 取原来的反,即原真现假,原假现真
-
-
三元运算符:将判断后的结果赋值给变量
-
操作符 语义 描述 ?: 布尔表达式?结果1:结果2 当表达式结果真,获得结果1;当表达式结果为假,获得结果2
-
//三元运算符使用:
String tag = date == "07"?"Happy":"all right";
控制台输入
-
程序运行中,可在控制台(终端)手动录入数据,再让程序继续运行。
-
导包语法:import 包名.类名;//将外部class文件功能引入到自身文件中.
-
使用顺序
-
导入 java.util.Scanner
-
声明Scanner类型的变量
-
使用Scanner类中对应的函数(区分类型):
-
.nextInt(); //获得整数
-
.nextDouble(); //获得小数
-
.next(); //获得字符串
-
.next().charAt(0); //获得首个字符
-
-
-
注意:如果输入了不匹配的数据,则会产生: java.util.InputMismatchException [输入不匹配的错误]
-
变量:
-
计算机内存中的一块储存空间,是存储数据的基本单元
-
-
数据类型:
-
基本数据类型(8种), 引用数据类型(String, 数组, 对象)
-
-
运算符:
-
算术运算符, 赋值运算符, 关系运算符, 逻辑运算符,三元运算符
-
-
类型转换:
-
自动类型转换, 强制类型转换
-
-
类型提升:
-
数字间的常规类型提升,字符串的特殊类型提升
-
-
控制台录入:
-