Java基础(一)
1. 数据类型与变量
1.1数据类型
- 基本数据类型:整型、浮点型、字符、布尔
- 引用数据类型:类、数组、接口、枚举、标注
数据类型 | 关键字 | 存储字节 | 取值范围 |
---|---|---|---|
字节型 | byte | 1 字节 | -128~127 |
短整型 | short | 2 字节 | -32768~32767 |
整型 | int(默认) | 4 字节 | -2^31 ~ 2^31-1 |
长整型 | long | 8 字节 | -2^63 ~ 2^63-1 |
单精度浮点数 | float | 4 字节 | 有效位6~7位 |
双精度浮点数 | double(默认) | 8 字节 | 有效位15位 |
字符型 | char | 2字节 | 0~65535 |
布尔类型 | boolean | 1 字节 | true、false |
注意:
- 长整型数值有一个后缀L或l,建议用L
- float类型的数值有一个后缀F获f,没有后缀的浮点数值默认为double类型
- 强烈建议不要在程序中使用char类型
1.2. 变量
- 变量名必须是一个以字母开头,并由字母或数字构成的序列。
- 变量名中的所有字符都是有意义的,大小写敏感
- 常量:关键字final表示这个变量只能被赋值一次,赋值后无法更改。常量名使用一般全大写
- 变量声明时需初始化,不初始化可能会出问题
- 变量名不可重复声明
1.3 数值类型转换
-
上图中6个实线箭头表示无信息丢失的转换,3个虚箭头表示可能有精度损失的类型转换。
-
数值在进行计算时,先要将两个操作数转换为同一种类型,然后进行计算。
2. 运算符
2.1 算术计算符
+;-;*;/;%(取余);+=;-=(赋值运算符)
--;++(自减/增)
int i = 2;
int i1 = i++;
System.out.println(i);//3
System.out.println(i1);//2
int b = 2;
int i2 = ++b;
System.out.println(b);//3
System.out.println(i2);//3
2.2关系运算符
==; !=; >; <; >=; <=
&&; ||;
//三目运算符?:
condition ? expression1 : expression2
注意
&&和||是按照短路方式来求值的(如果第一个操作书已经能够确定表达式的值,第二个操作数就不必计算了)
2.3位运算符
&(and) ; |(or) ; ^(xor) ; ~(not)
>>(左移/除二) ; <<(右移/乘二) ; >>>(逻辑右移)
3. 控制流程
3.1条件语句
1.if
2.if else
3.if elseif else
3.2循环
-
while(condition) statement
用于不确定次数的循环 -
do(statement) while(condition);
循环体至少执行一次。先执行语句,在检测循环条件
-
for循环
用于确定次数的循环 -
多重选择 switch语句
switch (choice)
{
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
default:
// bad input
break;
}
####### 注意:
- 有可能触发多个case分支。如果case分支语句的末尾没有break语句,就会接着执行下一个case分支语句。这样会引发错误。因此,在程序中减少甚至是不使用switch语句。
- case标签可以为char,byte,short,int,枚举,字符串(java7)
3.3中断控制流程语句
- break
- 跳出当前循环
- 可以使用标签,标签必须放在希望跳出的最外层循环之前,并且紧跟一个冒号:
- continue
- 将控制转移到最内层循环的首部
- 可以使用标签
####### 注意:
break和continue容易混淆,且是可选的,即不适用它们也可以表达相同的逻辑含义。
4.数组
4.1概念
数组是一种数据结构,用来存储同一类型值的集合。通过一个整型下标可以访问数组中的每一个值。
4.2数组的定义
- 方式一
//数组存储的数据类型[] 数组名字 = new 数组存储的数据类型[长度];
int[] arr = new int[3];
- 方式二
//数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...};
int[] arr = new int[]{1,2,3,4,5};
- 方式三
//数据类型[] 数组名 = {元素1,元素2,元素3...};
int[] arr = {1,2,3,4,5};
4.3 数组的内存结构分析
- 数组的拷贝机制
4.4数组的优缺点
- 可以通过下标(或索引)访问指定位置的元素,速度快
- 数组的所有元素要求相同
- 数组要求内存空间连续,并且长度一旦确定就不能更改
- 增加和删除元素时可能移动大量元素,效率低
4.5数组工具类
/*
1.static int binarySearch(int[] a, int key)
使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。
2.static boolean equals(int[] a, int[] a2)
如果两个指定的 int 型数组彼此相等,则返回 true。
3.static void fill(int[] a, int val)
将指定的 int 值分配给指定 int 型数组的每个元素。
4.static void sort(long[] a)
对指定的 long 型数组按数字升序进行排序。
5.static String toString(int[] a)
返回指定数组内容的字符串表示形式。
*/
4.6二维数组
- 概念:二维数组本质上就是由多个一维数组堆在一起组成的数组,二维数组中的每一行都是一个一维数组。