一、Java相关的一些小知识
1.JDK,JRE,JVM的作用及关系
JVM:保证Java语言跨平台
JRE:Java程序的运行环境,包括了JVM和一些基本类库
JDK:Java程序的开发环境,包括了JRE和一些工具:比如javadoc等。
2.环境变量
path环境变量:保证javac命令可以在任意目录下运行。
classpath环境变量:保证class文件可以在任意目录下运行
二、Java基本语法
1.关键字:
被Java语言赋予特定含义的单词,全部小写。注意事项:goto和const作为保留字存在。
2.标识符:
给类,接口,方法,变量等起名字的字符序列。
1)构成:英文大小写字母,数字,$和_
2)注意事项:不能以数字开头且不能是关键字且区分大小写
3)约定俗成的命名规则:
A:包,全部小写,如:com;多级包情况下,包与包直接用.隔开如:com.itheima
B:类与接口,首字母大写,每个单词首字母大写,如:StudentClass
C:方法与变量,首字母小写,多个单词则从第二个单词开始,每个单词首字母大写: 如studentName
D:常量,全部大写,多个单词用_隔开如:DEFAULT_STUDENT_AGE
3.注释:
对程序进行解释说明的文字
1)分类:
A:单行注释://
B:多行注释:/**/
C:文档注释:/** */ 用于使用javadoc生成帮助文档
2)作用:解释说明程序,提高了代码的阅读性。
4.常量
程序执行的过程中,其值不发生改变的量。
1)分类:
A:字面值常量 :
字符串常量 "hello"
整数常量 12,23
小数常量 12.345
字符常量 ‘a’,’A’,'0’
布尔常量 true,false
空常量 null
B:自定义常量
用final修饰变量,如:final int a = 0;则a代表常量0
2)整数常量的四种表现形式
A:二进制 由0,1组成。以0b开头。
B:八进制 由0,1,...7组成。以0开头。
C:十进制 由0,1,...9组成。整数默认是十进制。
D:十六进制 由0,1,...9,a,b,c,d,e,f(大小写均可)组成。以0x开头。
5.变量
在程序的执行过程中,其值在某个范围内可以发生改变的量
6.数据类型
Java是一种强类型语言,针对每种数据都提供了对应的数据类型。
分类:
A:基本数据类型:4类8种
整数 占用字节数
byte 1
short 2
int 4
long 8
浮点数
float 4
double 8
字符
char 2
布尔
boolean 1
注意事项:
整数默认是int类型,浮点数默认是double。
长整数要加L或者l,单精度的浮点数要加F或者f。
B:引用数据类型:类,接口,数组。
7.数据类型转换
1)分类:
A:默认转换
从小到大,基本过程如下:
byte,short,char -- int -- long -- float -- double
注意:byte,short,char之间不相互转换,直接转成int类型参与运算。
B:强制转换
从大到小,可能会有精度的损失,一般不建议这样使用。
格式:目标数据类型 变量名 = (目标数据类型) (被转换的数据);
2)注意事项:
boolean类型不参与转换
8.运算符
1)算术运算符:+,-,*,/,%,++,--
A:+的3个含义:加法,正号,字符串连接符
B:/和%的区别:除法操作时,/取商,%取余数
C:++(--)的作用是自增(自减)
单独使用,放在操作数据的前面和后面效果一样。即a++或者++a效果一样。
参与操作使用,放在操作数的前面:先自增或者自减,再参与操作,例:
int a = 1;
int b = ++a;
最终b的值为2
放在操作数的后面:先参与操作,再自增或者自减,例:
int a = 1;
int b = a++;
最终b的值为1
2)赋值运算符:=,+=,-=,*=,/=,%=等
A:=叫做赋值运算符,是最基本的赋值运算符
int a = 0; 把0赋值给int类型的变量a。
B:+=,-=,*=,/=,%=叫做扩展赋值运算符,特点是隐含了自动强制转换。
3)比较运算符:==,!=,>,>=,<,<=,最终结果总是boolean类型。注意:千万不要把==写成了=
4)逻辑运算符:&,|,^,!,&&,||,用于连接boolean类型的式子
总结:
&:有false则false
|:有true则true
^:相同则false,不同则true。
!:非true则false,非false则true
&&:结果和&是一样的,不过有短路效果。左边是false,右边不执行。
||:结果和|是一样的,不过有短路效果。左边是true,右边不执行。
5)位运算符:^,<<,>>,>>>等。一个数据针对另一个数据位异或两次,该数不变
6)三元运算符:?:,格式为,比较表达式?表达式1:表达式2;
执行流程:
首先计算比较表达式的值。
如果是true,取表达式1为结果。
如果是false,取表达式2为结果。
9:流程控制语句
1)顺序结构:从上往下,依次执行
2)选择结构:按照不同的选择,执行不同的代码
A:if语句
B:switch语句
switch (表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; default: 语句体n+1; break; }
首先计算表达式的值,和每一个case进行匹配,如果有就执行对应的语句体,看到break就结束。如果没有匹配,就执行default的语句体n+1。
注意:
表达式只可以是byte,short,int,char(JDK5以后可以是enum,JDK7以后可以是 String)
case后面只能是常量,不能是变量,多个case后面的值不能出现相同的
default可以在任意位置。但是建议在最后。
3)循环结构:做一些重复的代码有for,while,do...while
A:
for(初始化语句;判断条件语句;控制条件语句){ 循环体语句; }
循环体语句如果是一条,可以省略大括号,但是不建议
执行流程:
a:执行初始化语句
b:执行判断条件语句
如果是true,继续
如果是false,循环结束
c:执行循环体语句
d:执行控制条件语句
e:回到b
B:
while(判断条件语句) { 循环体语句; }
扩展格式:
while(判断条件语句){ 循环体语句; 控制条件语句; }
初始化语句;
C:do...while循环
基本格式do { 循环体语句; }while(判断条件语句);
扩展格式:初始化语句;do { 循环体语句; 控制条件语句; }while(判断条件语句);
D:for和while的区别4)控制跳转语句
E:do...while和另外两种循环的区别:do...while循环至少执行一次循环体,for和while必须先 判断条件是否是true,然后才能决定是否执行循环体a:使用上的区别
for语句的控制条件变量,在循环结束后不能在使用了。
而while的可以继续使用。
b:理解上的区别
for适合于一个范围的判断
while适合次数不明确的
A:break:中断
用在循环和switch语句中,离开此应用场景无意义。B:continue:继续
用于跳出单层循环和跳出多层循环,跳出多层循环时需要标签语句的配合
C:return:返回用在循环中,离开此应用场景无意义。用于跳出单层循环的一次,可以继续下一次
用于结束方法,一旦遇到return,程序就不会在继续往后执行。
10.方法
就是完成特定功能的代码块。在很多语言里面有函数的定义,而在Java中,函数被称为方法。
1)格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) { 方法体语句; return 返回值; }
修饰符:有 public static,等
返回值类型:功能结果的数据类型
方法名:方法的名字,方便我们调用该方法。
参数类型:参数的数据类型
参数名:变量
参数分类:
实参:实际参与运算的数据
形参:方法上定义的,用于接收实际参数的变量
方法体语句:完成功能的代码块
return:结束方法
返回值:功能的结果,由return带给调用者。
2)注意事项
A:方法不调用不执行
B:方法之间是平级关系,不能嵌套定义
C:方法定义的时候,参数是用,隔开的
D:方法在调用的时候,不用在传递数据类型
E:如果方法有明确的返回值类型,就必须有return语句返回。
3)方法重载
在同一个类中,方法名相同,参数列表不同。与返回值无关。
参数列表不同:
参数的个数不同。
参数的对应的数据类型不同。
11.数组
存储同一种数据类型的多个元素的容器。
1)特点:每一个元素都有编号(索引),从0开始,最大编号是长度-1。
2)定义格式
A:数据类型[] 数组名;
B:数据类型 数组名[];(不建议使用)3)初始化
A:动态初始化:只给长度,系统给出默认值,如:int[] arr = new int[3];
B:静态初始化:给出值,系统决定长度,如:int[] arr = new int[]{1,2,3};简化版:int[] arr = {1,2,3};
4)二维数组
元素是一维数组的数组。
格式:
A:数据类型[][] 数组名 = new 数据类型[m][n];
B:数据类型[][] 数组名 = new 数据类型[m][];
C:数据类型[][] 数组名 = new 数据类型[][]{{...},{...},{...}};
D:数据类型[][] 数组名 = {{...},{...},{...}};
12.Java的内存分配
Java的内存分配主要为五部分:
A:栈 存储局部变量
B:堆 存储所有new出来的
C:方法区(面向对象部分详细讲解)
D:本地方法区(系统相关)
E:寄存器(CPU使用)
注意事项:
a:局部变量 在方法定义中或者方法声明上定义的变量。
b:栈内存和堆内存的区别
栈:数据使用完毕,就消失。
堆:每一个new出来的东西都有地址,每一个变量都有默认值
byte,short,int,long 0
float,double 0.0
char '\u0000'
boolean false
引用类型 null
数据使用完毕后,在垃圾回收器空闲的时候回收。