Java基础知识总结(上)
Java中的注释
单行注释 //
多行注释 /* */
单行注释和多行注释的作用:
① 对所写的程序进行解释说明,增强可读性。方便自己,方便别人
② 调试所写的代码
文档注释 /** */
注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档。
标识符
标识符:凡是自己可以起名字的地方都叫标识符。
比如:类名、变量名、方法名、接口名、包名…
标识符的命名规则:–> 如果不遵守如下的规则,编译不通过!
① 由26个英文字母大小写,0-9 ,_或 $ 组成
②数字不可以开头。
③不可以使用关键字和保留字,但能包含关键字和保留字。
④Java中严格区分大小写,长度无限制。
⑤标识符不能包含空格。
Java中的名称命名规范: —>如果不遵守如下的规范,编译可以通过!
包名:多单词组成时所有字母都小写:xxxyyyzzz
类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
注意1:在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。
注意2:java采用unicode字符集,因此标识符也可以使用汉字声明,但是不建议使用。
变量
分类
变量按照数据类型来分:
a. 基本数据类型:
整型:byte \ short \ int \ long
浮点型:float \ double
字符型:char
布尔型:boolean
b. 引用数据类型:
类(class)
接口(interface)
数组(array)
类型 | 占用存储空间 | 表示数据范围 |
---|---|---|
byte | 1字节=8bit | -128~127 |
short | 2字节 | -2^15 ~2^15 -1 |
int | 4字节 | -2^31 ~2^31 -1 |
long | 8字节 | -2^62 ~2^62 -1 |
float | 4字节 | -3.403E38 ~ 3.403E38 |
double | 8字节 | -1.798E308 ~ 1.798E308 |
- java的整型常量默认为 int 型,声明long型常量须后加‘l’或‘L’
- java程序中变量通常声明为int型,除非不足以表示较大的数,才使用long
转义字符:
转义字符 | 含义 |
---|---|
\b | 退格符 |
\n | 换行符 |
\r | 回车符 |
\t | 制表符 |
\“ | 双引号 |
\‘ | 单引号 |
\\ | 反斜线 |
变量在类中声明的位置:
成员变量 vs 局部变量
定义格式
java定义变量的格式:数据类型 变量名 = 变量值;
说明:
① 变量必须先声明,后使用
② 变量都定义在其作用域内。在作用域内,它是有效的。换句话说,出了作用域,就失效了
③ 同一个作用域内,不可以声明两个同名的变量
运算规则
基本数据类型之间的运算规则:
前提:这里讨论只是7种基本数据类型变量间的运算。不包含boolean类型的。
自动类型提升:
结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。
graph LR char --> int byte --> int short --> int --> long --> float --> double
特别的:byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。当byte、char、short三种类型的变量做运算时,结果为int型。
强制类型转换:
a.需要使用强转符:()
b.注意点:强制类型转换,可能导致精度损失。
说明:此时的容量大小指的是,表示数的范围的大和小。比如:float容量要大于long的容量
String类型变量的使用
String属于引用数据类型,翻译为:字符串
声明String类型变量时,使用一对” “
String可以和8种基本数据类型变量做运算,且运算只能是连接运算:+
运算的结果仍然是String类型
运算符
算数运算符
太简单,不说了
赋值运算符
介绍一个特别的:instanceof
作用是检查是否是类的对象,例如: “Hello” instanceof String = true
逻辑运算符
&—逻辑与 | —逻辑或 !—逻辑非
&& —短路与 || —短路或 ^ —逻辑异或
- “&”和“&&”的区别:
- 单&时,左边无论真假,右边都进行运算;
- 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
- “|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。
三元运算符
格式: (表达式1)?表达式2:表达式3;
若表达式1的结果为真则执行表达式2,若为假则执行表达式3
注意
表达式1,表达式2,表达式3的类型可以不同,进行自动类型转换(提升)
1
2Object o1 = true ? new Integer(1) : new Double(2.0);
System.out.println(o1);//1.0条件表达式不能取代一般的if语句,仅当if语句中内嵌的语句为赋值语句(且两个分支都给同一变量赋值)时才能代替if语句,例如:
1
2
3
4
5
6
7
8if(a%2==0)
printf("even/n");
else
printf("odd/n");
//不能写成
(a%2==0)?printf("even/n"):printf("odd/n");
//但是可以写成
printf("%s/n",(a%2==0?"even":"odd");
运算符的优先级
运算顺序(从左往右或从右往左) | 运算符 |
---|---|
. () {} ; , | |
R –> L | ++ – ~ !() |
L –> R | * / % |
L –> R | << >> >>> |
L –> R | < > <= >= instanceof |
L –> R | == != |
L –> R | & |
L –> R | ^ |
L –> R | | |
L –> R | && |
L –> R | || |
R –> L | ? : |
R –> L | = *= /= %= |
数组
概述
- 数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括 基本数据类型和引用数据类型。
- 创建数组对象会在内存中开辟一整块连续的空间,而数组名中引用的是 这块连续空间的首地址。
- 数组的长度一旦确定,就不能修改。
- 我们可以直接通过下标(或索引)的方式调用指定位置的元素,速度很快。
使用
一维数组
一维数组的声明
1
type var[] 或 type[] var;
Java语言中声明数组时不能指定其长度(数组中元素的数), 例如: int a[5]; //非法
初始化
动态初始化:数组声明且为数组元素分配空间与赋值的操作分开进行
1
2
3
4
5
6
7
8
9
10int[] arr = new int[3];
arr[0] = 3;
arr[1] = 9;
arr[2] = 8;
String names[];
names = new String[3];
names[0] = “钱学森”;
names[1] = “邓稼先”;
names[2] = “袁隆平”;
静态初始化:在定义数组的同时就为数组元素分配空间并赋值。
1
2
3
4
5
6
7int arr[] = new int[]{ 3, 9, 8};
//或
int[] arr = {3,9,8};
String names[] = {
“李四光”,“茅以升”,“华罗庚”
}
数组元素的默认初始化值
数组元素类型 元素默认初始值 byte 0 short 0 int 0 long 0L float 0.0F double 0.0 char 0或‘\u0000’(表现为空) boolean false 应用类型 null 多维数组
声明和初始化
格式1(动态初始化):int[][] arr = new int[3][2];
定义了名称为arr的二维数组
二维数组中有3个一维数组
每一个一维数组中有2个元素 一维数组的名称分别为arr[0], arr[1], arr[2]
给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;
格式2(动态初始化):int[][] arr = new int[3][];
二维数组中有3个一维数组。
每个一维数组都是默认初始化值null (注意:区别于格式1)
可以对这个三个一维数组分别进行初始化
arr[0] = new int[3]; arr[1] = new int[1];
arr[2] = new int[2];
注: int[][]arr = new int[][3]; //非法