Java基础语法
1、Java体系与特性:
体系:JavaSE、JavaEE、JavaME
特性:
(1)是一种纯面向对象的编程语言
(2)一种与平台无关(跨平台)的语言。它提供了在不同平台下运行的解释环境
(3)一种健壮的语言,吸收了C/C++语言的优点
(4)有较高的安全性。(自动回收垃圾机制,强制类型检查,取消指针)
2、Java的跨平台原理:
3、Java技术的两大核心机制:JVM和GC
4、JVM可以理解为一个可以运行java字节码的虚拟计算机系统
(1)它有一个解释器组件,可以实现java字节码和计算机操作系统的通信。
(2)对于不同的运行平台,有不同的JVM。
JVM屏蔽了底层运行平台的差别,实现了”一次编译,随处运行”。
5、垃圾回收器(GC)
JVM提供一个系统线程,用于追踪存储空间的分配情况,检查和释放那些可以被释放的空间。
垃圾回收器在java程序运行过程中自动启用,程序员无法精确控制和干预。
垃圾回收–不再使用的内存空间应当进行回收。
6、JDK(Java Development Kits):
Java开发工具集,包含了JRE和JavaAPI(应用程序编程接口):包括Java编译器(javac.exe)、Java运行时解释器(java.exe)、Java文档化工具(Javadoc.exe)以及其他工具及资源。
7、JRE:
Java运行环境
8、JDK的下载安装以及环境变量的配置
9、Java语句分类:
(1):结构定义语句
(2):功能执行语句:必须以英文分号结尾 ;
10、变量
就是系统为程序分配的一块内存单元,用来存储各种类型的数据。由于该存储单元中的数据可以发生改变,因此得名为“变量”。
11、变量的分类:
按照数据类型可以划分为:
- 基本数据类型
- 引用数据类型
按照被声明的位置划分:
- 局部变量:方法或者语句块内部定义的变量。
- 成员变量:方法外部、类的内部定义的变量。
注意:类的外部不可以有变量声明
12、数据类型:
基本数据类型:
- 整型:byte、short、int、long
- 浮点型:float、double
- 字符型:char
- 布尔型:boolean
引用数据类型:
- 字符串
- 类
- 接口
- 数组
13、标识符
Java对类、包、方法、参数和变量等要素命名时使用的字符序列称为标识符。规则如下:【硬性要求:不遵守就会报错】
- 由数字、字母、下划线、美元符号组成。
- 不能以数字开头
- 区分大小写
- 长度无限制
- 不能使用Java中的保留关键字
特别注意:在Java中命名是要做到见名知意。
14、命名规范:【软性要求:】
- 类名规范:首字母大写,后面每个单词首字母大写(大驼峰式)。
- 方法名规范: 首字母小写,后面每个单词首字母大写(小驼峰式)。
- 变量名规范:全部小写。
- 常量名规范:全部大写,多个单词要用下划线(_)隔开。
15、数据类型转换:
- 布尔类型不能转换成任意其他数据类型
- 自动类型转换:数据范围小的数据类型自动转换成数据范围大的数据类型
byte、short、int->float->long->double
注意点:byte、short、int不会相互转换,它们三者在进行运算的时候都会先转换成int类型,再进行运算。 - 强制类型转换:数据范围大的数据类型强制转换成数据范围小的数据类型。这里必须加上强制类型转换符,
注意点:强制类型转换可能造成精度降低和数据溢出。
16、定义浮点类型的数据时,需要在数据值后面加个F。(原因:我们在使用浮点数时,默认类型是double。)
float f = 13.0F;
17、定义long类型的数据时,需要在数据值后面加个L。(原因:我们在使用整型时,默认类型是int)
Long a = 2200000000L;
18、char类型:
【1】使用单引号引住一个字符 char a =‘A’;
【2】可以进行算数运算。 System.out.println(++a);
【3】可以进行数字类型的强制转换 System.out.println(int(a));
当一个char类型的数与int类型的数相加时,返回的数据为int类型。(原因:是因为char的数据范围小于int的数据范围),但是如果一个char类型的数据自加,那么它返回的是char类型的数。
19、ASCII表三个需要记的 0->48、A->65、a->97
20、方法关键要素:
- 访问修饰符:
(1)private(私有):只有同一个类下可以访问
(2)default(默认):同一个类下或包下可以访问
(3)public(公共):都可以访问
(4)protected(被保护):同一个类下或包下或不同包的子类可以访问 - 返回值类型:(void)表示没有返回值
- 方法名称:
- 参数列表:
21、算数运算符:+、-、*、/、%
22、赋值运算符:=、+=、-=、*=、/=、%=
23、关系运算符:==、>、<、<=、>=
24、逻辑运算符:
- &(与):&的两边都为true时才为true。
- |(或):|的两边至少有一个为true才为true。
- (异或):异或的两边分别为一真一假才为true。两边的结构相同时,为false。
- !(非):与原来的布尔值相反
- 短路与(&&):&&的两边都为true时,才为true(如果左边为false,那么右边式子不必执行)。
- 短路或(||):||的两边至少有一边为true,才为true(如果左边的值为true,那没右边式子不必执行)。
- 短路&&、短路||与&、|的区别:
(&、|)不管结果如何两边的式子都要执行完,而(短路&&、短路||)因情况而定。
25、字符串连接符(+)
只要+的两边有一边是字符串,得到的结果都将是字符串。
26、三目运算符:
((条件判断)?(表达式1):(表达式2);条件判断为真,则输出表达式1,否则输出表达式2 )
27、转义字符:
\n、\r(回车)、\t(水平制表,跳到下一个TAB位置)、\、\’、\”
28、类Scanner
Scanner input = new Scanner(System.in);
String str1 = input.next();
String str2 = input.nextLine();
next()与nextLine()的区别:next()返回的是一个字符串类型的数值,但是如果整行字符串中有出现空格,那么next()只能获取到空格之前的值,而nextLine()可以获取到整行字符串。
29、执行结构:
- 顺序结构:
- 分支结构:
(1)If-esle
(2)switch
Switch的三要素:case值、语句块、break
Switch的注意事项:
1、表达式的返回值必须是下述的几种类型之一: int、byte、short、String、char
2、case的值必须是常量,case的子句的取值不可以重复
Ps:这里的常量可以是:字符串常量、整数常量、浮点数常量、字符常量
3、default子句是可选的
4、break语句用来在执行一个case分支后使程序跳出switch语句块,如果case后面没有break,那么语句将一直执行下去,直到遇到break才结束或者直到程序结束。 - 循环结构:在循环条件满足的情况下,反复执行特定的代码
循环语句分类:
(1)while循环:先判断再执行语句块
格式: while(条件判断){循环语句块}
(2)for循环:
格式: for(初始化参数,条件判断,更新循环变量){循环语句块}
(3)do/while循环:先执行语句块,再判断(至少执行1次)
格式:do{循环语句块}while(条件判断)
while与do/while的区别:
【建议】在循环次数知道的情况下,使用for循环
在循环次数不清楚的情况下,使用while循环
30、break和continue语句
break:直接终止本轮循环。即不在执行break后面的语句。直接跳出循环
continue:用于跳过本轮的该次循环,continue后面的语句依然执行
3、退出多重循环的方法:给最外层的for循环取别名,break后面+别名
31、判断用户输入的类型
根据输入的类型,可以使用对应的hasNext()方法来判断你输入的数据是否符合。
32、数组
数组就是可以存放多个同类型数据的容器。
数组里的元素是按顺序排列的。
数组创建
(1)数据类型[] 数组名称 = new 数据类型[数组长度]; 创建动态数组
(2)数据类型[] 数组名称 = {数据1,数据2,数据3…数据n}; 创建静态数组
访问数组元素
通过数组下标来访问数字元素或者操作数组元素,数组的下标从0开始
对于未赋值的数组元素具有初始值,int类型的数据默认值为0,String类型为null,float(double)类型为0.0,char类型为、\u0000,boolean类型为:false
4、获取数组的长度的方法为:数组名称.length
5、数组遍历,可以使用for循环遍历
6、数组异常:
(1)空指针异常
(2)数组未赋值
(3)数组越界
(4)注意:数组在创建之后,长度就是固定不变的。
1、冒泡排序方法:
外层循环次数:数组的长度-1;
内层循环次数:数组的长度-1-i (变量的初始值为0)
2、二分查找法:
(1)前提:数组数据是有序排列
(2)当要查找的数据在中间数据的左边时->maxIndex = centerIndex-1;
(3)当要查找的数据在中间数据的右边时->minIndex = centerIndex+1;
3、多维数组:
创建格式:数据类型[][] 数组名称 = new 数据类型[长度][];
访问格式 数据类型[外层数组元素下标][内层数组元素下标]