内容来自毕向东老师的视频。
1、关键字 2、标识符 3、注释 4、常量和变量 5、运算符 6、语句 7、函数 8、数组
1、关键字
被java语言赋予了特殊含义的单词,关键字中的所有字母都为小写
(1)用于定义数据类型的关键字:class、interface、byte、short、int、long、float、double、char、boolean、void
(2)用于定义数据类型值得关键字:true、false、null
(3)用于定义流程控制的关键字:if、else、switch、case、default、while、do、for、break、continue、return
(4)用于定义访问权限修饰符的关键字:private、protected、public
(5)用于定义类、函数、变量修饰符的关键字:abstract、final、static、synchrnized
(6)用于定义类与类之间关系的关键字:extends、implements
(7)用于定义建立实例及引用实例、判断实例的关键字:new、this、super、instanceof
(8)用于异常处理的关键字:try、catch、finally、throw、throws
(9)用于包的关键字:package、import
(10)其他修饰符关键字:native、strictfp、translent、volatile、assert
2、标识符
规则:26个英文字母,数字,_$组成。数字不能开头,不可以使用关键字,java严格区分大小写,起名尽量有意义
规范:包名要小写、类名接口名多单词组成所有单词首字母大写,变量名函数名多单词组成时第一个单词首字母小写第二个单词开始首字母大写,常量名所有字母都大写多单词时每个单词用下划线连接
3、注释
注意要规范。
单行注释://
多行注释:/* */
文档注释:/** */
4、常量和变量
(1)常量分类:整数常量(二进制、十进制、八进制0、十六进制0x以及之间的转换)、小数常量、布尔型常量(true、false)、字符常量' '、字符串常量" "、null常量
(2)负数的二进制的表现形式:就是其正数的二进制取反+1,负数的最高位都是1。
(3)变量:将不确定的数据进行存储,即在内存中开辟一个空间。
如何开辟内存空间?就是通过明确数据类型、变量名称、数据来完成。
定义变量的格式:数据类型 变量名 = 初始化值;
什么时候定义变量?当数据不确定的时候,需要对数据进行存储时,就定义一个变量来完成存储操作。
类型的转换。强制类型转换
5、运算符
(1)字符串数据和任何数据使用+都是相连接,最终都会变成字符串。System.out.println("5+5="+5+5);//“5+5=55
(2)转义字符:通过\来转变后面字母或者符号的含义。\n:换行 \b:退格,相当于backspace键 \r:按下回车键(window系统中,回车符由两个字符来表示\r\nt:制表符,相当于tab键
(3)char c='你'
(4)赋值运算符+= -= /= %=
short s=3;s=s+2;(错误)s+=2;(正确)
(5)比较运算符:结果都是booean类型,要么是true,要么是false。不要混淆“==”和“=”。
(6)逻辑运算符,用于连接boolean类型的表达式。注意短路情况。
(7)位运算符
<<:乘以2的移动的位数次幂 >>:除以2的移动的位数次幂,最高位补什么由原有数据的最高位而定。
一个数异或同一个数两次,结果还是那个数。应用: 两个整数变量,不借助第三变量,交换他们的值,如何实现?
(8)三元运算符 (条件表达式)?表达式1:表达式2; (可以简化if else结构)
6、程序流程控制:顺序结构、判断结构(三种)、选择结构(switch语句)、循环结构(while、do while、for)
(1)if else与switch很像,对于byte short int char类型的用switch,效率高。boolean类型用if else。
(2) while:先判断条件,只有条件满足才执行循环体;do while:限制性循环体,再判断条件,条件满足,再执行循环体(无论条件是否满足,循环体至少执行一次)。
(3)for中定义的变量只在for中有效,循环执行完,变量被释放。
(4)什么时候使用循环结构?当需要对某些语句执行很多次时,就是用循环语句。
(5)循环注意:一定要明确哪些语句需要参与循环,哪些不需要。
(6)for循环的嵌套:尖儿朝上,可以改变条件,让条件随着外循环变化;尖儿朝下,可以初始化值,让初始化随着外循环变化。
例题:九九乘法表
for(int x=1;x<=9;x++)
{
for(int y=1;y<=x;y++)
{
System.out.print(y+"*"+x+"="+y*x+"\t");
}
System.ot.println();
}
(7)break(跳出,作用于选择结构和循环结构)、continue(继续,只能作用于循环结构,结束本次循环,继续下一次循环)
【标号】:break标号名;
【记住】break和continue语句的作用范围;break和continue单独存在时,下面不可以有任何语句,因为都执行不到。 【例题】----*
---* *
--* * *
-* * * *
* * * * *
for(int x=0;x<5;x++)
{
for(int y=x;y<5;y++)
{
System.ou.print("-");
}
for(int z=0;z<=x;z++)
{
System.out.print('* ');
}
System.out.println();
}
7、函数
(1)函数的格式:修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,........)
{
执行语句;
return返回值;
}
【注】当函数的返回值类型是void时,函数中的return语句可以省略不写。
函数中只能调用函数,不可以定义函数。
(2)如何定义一个函数?
1、既然函数是一个独立的功能,那么该功能的运算结果是什么先明确(即明确函数的返回值类型)
2、再明确在定义该功能的过程中是否需要为之的内容参与运算(即明确函数的参数列表)
【小细节】System.out.print(函数名(参数列表)); 当函数返回值类型为void时不可以
【小例子】1、定义一个功能,用于打印矩形 2、定义一个打印99乘法表功能的函数
(3)函数的重载:在同一个类中,允许存在一个以上的同名函数,只要他们的参数类型和参数个数不同即可。【注】重载和返回值类型没关系。
什么时候用重载?当定义的功能相同,但参与运算的未知内容不同,那么这时就定义一个函数名以表示其功能,方便阅读,通过参数列表的不同来区分同名函数。
8、数组
(1)格式:元素类型[ ] 数组名 = new 元素类型[元素个数或者数组长度]
(2)内存结构
栈:数据使用完毕,会自动释放;堆:new 不能释放,垃圾回收机制;方法区;本地方法区;寄存器。
(3)数组定义格式2:元素类型[] 数组名=new 元素类型[]{元素,元素,…….}
[异常1]ArrayIndexOutOfBoundsException:操作数组时,访问到了数组中不存在的脚标。
[异常2]NullPointerException:空值针异常,当引用没有任何指向值为null的情况,该引用还在用于操作实体。
(4)数组的操作:获取数组中的元素,通常会用到遍历。
数组中有一个属性可以直接获取到数组元素个数:数组名称.length。
[错误][I@de6ced:数组类型,int数据类型,内存地址
[例子]获取数组中的最值、对给定数组进行排序(选择排序、冒泡排序:相邻的两个元素进行比较,如果符合条件换位、import java.utile.*;Arrays.sort(array);)
(5)