Java基础语法
1.Java的特点
- 简单易学
- 面向对象(封装、继承、多态)
- 平台无关性(Java虚拟机实现平台无关性)
- 可靠性
- 安全性
- 支持多线程(C++语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而Java语言提供了多线程支持)
- 支持网络编程并且很方便(Java语言诞生本身就是为简化网络编程设计的,因此Java语言不仅仅支持网络编程而且很方便)
- 编译与解释并存
2. Java的诞生
- 1991年,Green项目,开发语言最初命名为Oak(橡树)
- 1996年,发布 JDK 1.0
- 1997年,发布 JDK 1.1
- 1998年,发布 JDK 1.2,同年发布企业平台 J2EE
- 1999年,Java分成 J2SE、 J2EE和 J2ME,JSP/Servlet技术诞生
- 2004年,发布里程碑式版本 JDK 1.5 后更名为 JDK 5.0
- 2005年, J2SE–>JavaSE、 J2EE–>JavaEE、J2ME–>JavaME
- 2009年,Oracle公司收购SUN
- 2011年,发布JDK 7.0
- 2014年,发布 JDK 8.0,是继JDK 5.0 以来变化最大的版本
- 2017年,发布 JDK 9.0,最大限度实现模块化
- 2018年3月,发布 JDK 10.0
- 2018年9月,发布 JDK 11.0
3. Java的三大平台体系
JavaSE(J2SE):
标准版:各个应用平台的基础
JavaME(J2ME):
微型版:致力于嵌入式的开发
JavaEE(J2EE):
企业版:为企业的环境进行开发环境的解决
4. Java是跨平台的
Java源代码(你写的代码)-》编译-》Java字节码文件-》运行-》JVM(JDK软件) 安装在不同的系统下面(window Linux OS)
5. DOS 命令
- 常用的 DOS 命令
- dir:列出当前目录下的文件以及文件夹
- md:创建目录
- rd:删除目录
- mkdir:在指定的文件夹下面创建指定的文件夹
- 切换盘符:直接在命令行中写盘符即可
- cd:进入指定目录
- cd…:退回到上一级目录
- cd\:退回到根目录
- del:删除文件
- cls:清屏
- exit:退出dos命令行
- 常用快捷键
- ➡⬅:移动光标
- ⬆:调阅历史操作命令
- Delete 和 Backspace:删除字符
6. Java中的注释问题
- 单行注释://
- 多行注释:/* */
- 文档注释:/** */
- 单行注释和多行注释,注释了的内容不参与编译。换句话说,编译以后生成的.class结尾的字节码文件中不包含注释掉的信息
- 注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档
- 多行注释不可以嵌套使用
7. 常量
进制单位 | 基数范围 | 规则 |
---|---|---|
二进制 | 0-1 | 逢2进1 |
八进制 | 0-7 | 逢8进1 |
十进制 | 0-9 | 逢10进1 |
十六进制 | 0-9 a-f | 逢16进1 |
8. 变量、八大基本数据类型【重点】
- 变量按照数据类型分类
- 基本数据类型
- 数值型
- 整数类型【byte、short、int、long】
- 浮点类型【float、double】
- 字符型【char]
- 布尔型【boolean】
- 引用数据类型
- 类【class】
- 接口【interface】
- 数组【[ ]】
整型 数据范围 占用内存的字节 byte -128-127 1字节 short -32768 - 32767 2字节 int(是最常用的,而且是默认的,以后开发就用int) -2^31 - 2^31-1 4字节 long -2^63 - 2^63-1 8字节 注意:一般在声明long类型的数据的时候在数据后面加L
浮点 数据范围 占用的字节数 double -1.79*10^308 - 1.79 * 10^308 8字节 float -3.4* 10^38 - 3.4*10^38 4字节 注意事项:
double有效的位数 是17
float 有效位数是7位
声明float类型的数据的时候需要加f
数据类型 数据范围 占用字节 char 除了\ 都是可以的 2字节 注意事项:
声明char类型的数据的时候是一个 单引号’'.而且单引号只能有一个元素
类型 数据范围 占用的字节 boolean true false 1字节 变量就是申请内存用来存储数据的 int a = 20; 栈区 a 20 int[] arr = new int[3] arr 栈区 引用地址 [0,0,0] 堆区
8. 变量的命名规则
- 首字母不能大写
- 变量的命名可以使用数字,字母,_,$等组成,但是不能以数字开头
- 用的是小驼峰的命名规则
- int userAge = 78;
- 命名一定要见名知意
- double weight = 87.6;
- 已经被Java使用的关键字不能再当成一个变量了
9. 类名的命名规则
- 首字母要大写
- 采用大驼峰命名规则,当一个类由两个或者多个单词组成的时候,每个单词首字母要大写
10. 转义字符【重点】
- 目的:把一个无意义的字符转为有意义的字符,或者将一个有意义的字符转为无意义的字符
- 语法格式
- \ 字符(有意义的字符或者无意义的字符)
- 及格特殊的字符
- \n:回车换行
- \t:制表符 空格
11. 算术运算符【重点】
- 数学中的 + (加) -(减) *(乘) /(除) %(取余)
- 先乘除后加减 先算小括号里面 再算括号外面的
- 自增和自减
- 目的:一个变量 自身加1或者自身减1
- 语法格式:
变量++;先执行当前的操作,再自身加1 ++变量;先自身加1,然后再执行其他操作 变量--;先执行当前的操作,再自身减1 --变量;先自身减1,然后再执行其他操作
12. 关系运算符
- (大于) < (小于) >= (大于等于) <=(小于等于) == (是否相等) != (是否不等于)
- 使用关系运算符的时候的返回值必须是一个布尔类型(boolean)的数据
13. 逻辑运算符【重点】
返回的结果也是一个布尔类型的数据
与:&&
语法格式:
条件1 && 条件2 &&......
条件1和条件2都为true的时候整体的结果才为true。只要条件1或者条件2有一个为false的话,就整体为false
逻辑与:且 取钱 得有卡且得有密码
或:||
语法格式:
条件1 || 条件2 ||.....
条件1和条件2都为false的时候,才整体为false,如果有一个为true,整体就为true
生活中案例:你一把 你媳妇一把,你的一把丢了(false) 你媳妇还有钥匙(true) 整体还可以开门
非: !
语法格式:
!条件
条件为true的话,整体返回false 条件为false的话,整体就是返回true
犟 反着来
14.逻辑运算符的短路原则【重点】
逻辑与的短路原则:
条件1 && 条件2 &&…
条件1为false的话,整体就为false了。条件2和以后的条件都不再执行了
条件1的结果已经决定了整体的结果,为了提高咱们的执行的效率
逻辑或的短路原则:
条件1 || 条件2 || …
条件1为true的话,整体就为true。后面的条件就不执行了
15. if分支【重点】
- 语法格式:
if (表达式) { 语句体 }
表达式:他的结果必须是一个布尔类型的数据
执行流程:如果表达式为true的话,就执行大括号后面的语句体,如果表达式为false,就不执行语句体
16. if - else 分支【重点】
- 语法格式:
if (表达式) { 语句体1 } else { 语句体2 }
执行流程:如果表达式true,执行语句体1,不会执行语句体2。如果表达式为false,不执行执行语句体1,执行语句体2,语句体1和语句体2不能同时执行
好比一个三叉路口:要么向左走 要么向右走
17. if - else if 分支【重点】
- 语法格式:
if (表达式1) { 语句体1 } else if (表达式2) { 语句体2 } else if (表达式3) { 语句体3 }..... else { 语句体n }
执行流程:如果碰到if后面的小括号里面的表达式为true就执行当前的大括号里面的语句体,其他的语句体不执行
只能选择其一;好比多叉路口
18. switch -case 分支【重点】
也是一种选择,只有满足当前的条件的时候才会执行当前的语句体
语法格式:
switch (表达式) { case 常量1: 语句体1; break; case 常量2: 语句体2; break; case 常量n: 语句体n; break; .... default: 语句体n+1; break; }
执行流程:表达式的值,去匹配case后面的常量,如果匹配成功的话,就执行当前的语句体。如果没有匹配成功case后面的常量的话,就执行default下面的语句体
swicth-case的面试题
switch (表达式){ } 表达式的值可以是什么数据类型的: int、short、byte、char、enum、String(jdk1.8以后可以)
19. while 循环
- 语法格式:
while (布尔表达式) { 语句体 }
- 执行流程:当代码while以后,去判断布尔表达式,如果布尔表达式为true,就执行语句体。然后再回到while,再次判断布尔表达式,如果布尔表达式为true,执行语句体。再次回到while,判断布尔表达式。如果布尔表达式为false,不再执行语句体。循环结束
20. do-while循环
- 语法格式:
do { 语句体 } while(布尔表达式);
- 执行流程:首先代码走到do的时候,先执行do后面的语句体,然后再到while关键字,去判断布尔表达式,如果布尔表达式为true的话,再次回到do 然后去执行语句体,直到布尔表达式为false的话,就结束循环
21. for循环【重点】
- 语法格式:
for (表达式1; 表达式2; 表达式3) { 语句体 }
表达式1:初始化的条件 表达式2:终止条件 表达式3:循环条件
- 执行流程:首先执行表达式1,再执行表达式2,如果表达式为true的话,执行大括号里面的语句体。再执行表达式3,直到表达式2为false的话,循环结束了
22. 嵌套循环【重点】
前提是for循环,一个循环里面套另外一个循环,并秉承着一点,内存层的循环结束以后再继续外层循环
外层循环控制行数,内层循环控制列
23. 三目运算符【重点】
开发用的很多
- 语法格式:
数据类型 x = (表达式) ? value1 : value2;
- 执行流程:表达式为true的话,返回 value1,如果表达式为false的话,返回value2
24.标准十进制ASCII码表
25.方法【重点】
- 无参数无返回值的方法
语法格式: public static void 方法的名字 () { 方法体 } 注意事项: 1.方法的声明必须再类中,在main主函数的外面 2.方法的调用必须再main主函数中调用,使用方法的名字调用 3.方法的名字一定和变量的命名一致
- 有参数无返回值的方法
语法格式:
public static void 方法的名字 (数据类型 参数的名字, 数据类型 参数名字,…) {
方法体
}
1.方法的声明处的参数叫形参。方法的调用处是实参。
2.方法声明处的参数一定要和方法调用处的参数的类型要保持一致的- 无参数有返回值的方法 语法格式: public static 数据类型 方法的名字 () { return 返回值;//返回值的数据类型要和上面的数据类型保持一致 } 无返回值的方法和有返回值的区别: 1.无返回值是在方法的声明处的大括号里面直接打印 2.有返回值的是调用的时候,结果给一个变量来接一下 - 有参数有返回值的方法 语法格式: public static 数据类型 方法名字 (数据类型 参数名字, 数据类型 参数名字,......){ 方法体 return 返回值; }
带返回值的方法,返回的值存在哪里了
如果返回的是八大基本数据类型,则返回到了本地方法栈中 如果返回的是引用数据类型,则返回到了堆内存中
26. break、continue关键字
关键字 适用范围 循环中使用的作用(不同点) 相同点 break switch - case 和循环结构中 结束当前循环 关键字后面不能声明执行语句 continue 循环结构中 结束当次循环 关键字后面不能声明执行语句
27. 数组
- 数组的理解:数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。
数组相关的概念:
数组名
元素
角标、下标、索引
数组的长度:元素的个数
数组的特点:
数组是有序排列的
数组属于引用数据类型的变量。数组的元素,既可以是基本数据类型,也可以是引用数据类型
创建数组对象会在内存中开辟一整块连续的空间
数组的长度一旦确定,就不能修改。
数组的分类:
① 按照维数:一维数组、二维数组、。。。
② 按照数组元素的类型:基本数据类型元素的数组、引用数据类型元素的数组
一维数组元素的默认初始化值
- 数组元素是整型:0
数组元素是浮点型:0.0
数组元素是char型:0或'\u0000',而非'0'
数组元素是boolean型:false
数组元素是引用数据类型:null
28 . 成员变量和局部变量
变量按照声明的位置可以分为成员变量和局部变量
成员变量
实例变量(不以static修饰)
类变量(以static修饰)
局部变量
形参(方法、构造器中定义的变量)
方法局部变量(在方法内定义)
代码块局部变量(在代码块内定义)
局部变量和成员变量【面试题】
区别 成员变量 局部变量 定义的位置 类的大括号的后面 (属性) 定义再方法体中 作用 用来描述当前对象的属性的(特征) 在方法中保存变量的值的 初始话的值 String =>null int==>0 浮点型=>0.0 char==>'\u0000’或0 使用的时候一定要进行赋值操作 内存 堆里面 栈里面 作用域 作用整个类的 只能在当前的方法中使用
29. 八大基本数据类型【细节点】
byte:
默认值 0 byte占用的空间是比较小的 占int类型四分之1
short:
默认值 占int类型二分之一
int:
默认值 0 开发中最常用的就是int
long:
比较大的整数的系统上面 内存就需要大点
float:
默认值是0.0f 浮点数不能表示精确的值,比如货币 不会打印出来0.0f 而是0.0
double:
默认值:0.0d 不会打印出来0.0d 而是0.0
char:
'\u0000'===>0
'\uffff'===>65535
boolean:
默认值:false