这几天没有更新文章,断断续续的学习中,然后阶段性更新
1. 变量
- 变量由数字、字母(包括中文)、下划线(_)和美元符号($)组成;
- 区分大小写,但不限制数量;
- 不能数字开头;
- 不能是Java中的关键字和保留关键字
- 非法标识符举例 : 2UserName(数字开头)、user#Name(#)、Hello 大海(空格)、class(关键字)
public class HelloWorld {
/**
*成员变量
*/
int num = 10;
public static void main(String[] args) {
/*局部变量*/
int num = 20;
System.out.println(num); // 受限于void方法的限制,不能访问私有变量
}
}
2. 8种基本数据类型
前言知识:
1个字节(Byte) = 8个位(Bit/比特)
2个字节(Byte) = 16个位(Bit)
4个字节(Byte) = 32个位(Bit)
8个字节(Byte) = 64个位(Bit)
单位换算:
1 Byte = 8 Bit
1 Kb = 1024 Byte
1 Mb = 1024 Kb
1 Gb = 1024 Mb
1 Tb = 1024 Gb
1 PB = 1024 Tb
在内存计算过程中,字节少的数据运算的更快; 在硬盘存储中,字节少的数据类型,也可充分存入更多的数据
/**
* 8种基本数据类型
* */
// 6种数值类型
byte b = 10; //字节型,占用1个字节, 取值范围 -128- 127 默认: 0
short s = 10; //短整型,占用2个字节, 取值范围 -32768- 32767 默认: 0
int i = 10; //整型,占用4个字节, 取值范围 -2147483648 - 2147483647 默认: 0
long l = 100L; //长整型,占用8个字节, 取值范围 --- 默认: 0
float f = 10.00F; //单精度浮点型,占用4个字节, 取值范围 --- 默认: 0.0F
double d = 10.00D; //双精度浮点型,占用8个字节, 取值范围 --- 默认: 0.0D
// 字符型
char c = 'A'; //占用2个字节, 取值范围 0 - 65535 默认: '\u0000'
// 布尔型(布尔型在真实存储中占用字节情况需要根据不同平台而决定,所以具有不确定性)
boolean B = false; //占用字节不确定, 取值范围 true | false 默认: false
3. 进制转换
十进制转成二进制: 小数部分,只是取小数部分,乘积后的数据去掉整数部分再去乘2
4. 基本数据类型转换
自动类型转换:
1.容量小的类型,自动转换成容量大的数据类型
2.byte、short、int,他们三个在计算时会自动转换成int类型
3.如果把int类型值转换成float类型值,或者long转成double,或者int转成double类型,不需要强制类型转换,但是数据可能会丢失精度
// float和double 是属于近似值
// byte char short int long 是属于精确值
// 由精确值转成近似值,精度可能会丢失
byte b = 10;
short s = b; //把一个字节赋值给短整型数据,自动转换成短整型
System.out.println(s); // 10
int i = s; //把一个短整型数据赋值给整型,自动转换
System.out.println(i); // 10
long lon = i; //把一个整型数据赋值给长整型
System.out.println(lon);// 10
// char --> int 自动转换
char sex = '男'; //一个中文汉字站2个字节
int sex2 = sex; //自动转换
System.out.println(sex2); // 30007
float f = 20f;
double d = f; // 自动转换
System.out.println(d); // 20.0
byte char short int long属于精确值, float和double近似值;精确值转近似值时可能会丢失精度。
int num = 2147483000;
float num2 = num;
System.out.println(num2); //2.14748301E9 如果是表示货币值,不建议是使用float和double
byte b = 10;
short s = 1;
short s1 = s + b; // 报错了,因为自动类型转换的问题, byte short int都会自动转成int, 所以s1不能时short类型
System.out.println(s1);
5. 强制类型转换
1.容量大的数据类型转换成容量小的数据类型,注意可能会出现数据精度降低或数据溢出
2.boolean类型的数据,不能强制转换成其他任何类型的数据
byte b = 10;
short s = 1;
short s1 = (short)(s + b); // 强制转换成short类型
System.out.println(s1);
6. 关键字
7. 转义字符
1. \n: 换行符
2. \r: 回车符
3. \t: 水平制表(跳转到下一个tab)
4. \\: 表示\(反斜线)
5. \': 表示单引号
6. \": 表示双引号
System.out.print: 在控制台打印(所有结果单行打印)
System.out.println: 在控制台换行打印(换行打印)
8. 运算符与优先级
1. 算术运算符
+ : 加
- : 减
* : 乘
/ : 除
% : 取余(也叫取模)
++: 自增(分先增和后增,即 先赋值后增加和先赋值后增加)
--: 自减
2. 关系运算符(返回布尔值)
== : 相等于
!= : 不等于
< : 小于
> : 大于
<= : 小于等于
>= : 大于等于
3. 逻辑运算符
& : 与
| : 或
^ : 异或
! : 非
&& : 短路与
|| : 短路或
在计算机中,非0即真,0为假
逻辑或: 或1则1
逻辑与: 全1才1
true & false => false // 与运算,只有两个值都为true时结果才为true
true | false => true // 或运算,只要有一个值为true时结果就为true
true ^ false => true // 异或运算,两个值相同为false,不同为true
!true => false // 取反
true && false => false
true || false => true
& 和 && 的区别 (|和 ||的区别同理)
&: 在逻辑运算时,分别计算算式表达式再进行与运算;在做位运算时表示按位与
&&: 先计算左边的表达式,如果结果是false,则不用计算右边了,直接短路了,返回false
4. 位运算符(计算机最快,因为计算机就是这种计算方式)
~ : 按位取反(全都取反)
& :按位与(有0则0,只有两个1才为1)
| : 按位或运算(有1则1,只有两个0才为0)
^ : 按位异或(相等为0,不同为1)
5. 移位运算符
如何交换两个数:
1. 定义一个变量法
2. var a = 1; b = 2; a = a + b - (b = a);(前后端通用)
3. 利用位移的方法(异或的算法是交互的速度最快的,因为是位移的方式)
a = a ^ b;
b = a ^ b;
a = a ^ b;
4. 利用加减法 或者 乘除法的妙用;
6. 三目运算符( ` x ? y : z`)
7. 运算符优先级表
优先级举例:
int a = 1;
int b = 2;
a = ++a + (b--) + (a-b) + b = 6;
// 解析:
a = A + B + C +D
A = ++a = 2;
B = (b--) = 2; 整体为2,但是整体之后b马上变成了1;
C = (a-b) = 1; a = 2了; b = 1了; 做差就是1;
D = b = 1;
var a = 1; b = 2; a = ++a + (b--) + (a-b) + b = 6;(前端也一样)
9. 引用其他类
用 import 引入需要用到的类, 除了lang(language的缩写)文件夹下的包自动引用了
import java文件夹下的类,下一层文件夹路径用.来引用, 然后加上.java的类名
举例引用一个Scanner类: import java.util.Scanner即可
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//创建一个键盘输入工具的实例
Scanner input = new Scanner(System.in);
System.out.println("请开始输入吧,回车后显示。您输入的数据是: ");
int x1 = input.nextInt(); //从键盘接收一个int类型的数据
System.out.print(x1); //输出键盘输入的数值
}
}
10. switch分支语句
11. 分支语句比较和总结
12. while和dowhile
while(条件表达式){
代码块
}
符合条件,循环继续执行; 否则, 循环退出
特点: 先判断, 再执行
do{
循环操作代码块
}while(循环条件)
先执行一遍循环操作, 符合条件, 循环继续; 否则, 退出循环;
特点: 先执行, 再判断
13. for循环
for(初始化参数, 判断条件, 更新循环变量){
循环体
}
循环一定要有出口, 否则会死循环;
多重循环, 即循环嵌套; 外循环控制行, 内循环控制列;