被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 synchronized 6.用于定义类与类之间关系的关键字: extend implements 7.用于建立实例,引用实例,判断实例的关键字: new this super instanceof 8.用于异常处理的关键字: try catch finally throw throws 9.用于包的关键字: package import 10.其他修饰符关键字: native strictfp transient volatile assert
是指在程序中自定义的一些名称。 由26个英文字母(大小写),数字0-9,符号_ $组成。
1.数字不可以作为开头 2.不可以使用关键字
Java严格区分大小写。
1.包名:多单词组成时所有字母都小写。 2.类名接口名:多单词组成时,所有单词的首字母都大写 3.变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。 4.常量名:所有字母都大写,多单词时每个单词用下划线连接。
1.单行注释: //注释内容 2.多行注释: /*注释内容*/ 3.文档注释:
/** 注释内容 */常量可分为:整数常量、小数常量、布尔型常量、字符常量、字符串常量、null常量。
+,-,*,/,%,++(前置),++(后置),–(前置),–(后置),+(字符串相加)
=,+=,-=,*=,/=,%=
short c = 3; c = c + 3;//编译无法通过,因为c会被提升为int类型,无法赋值给short类型 c += 3;//编译通过,+=在给c赋值时,自动完成了强转操作==,!=,<,>,<=,>=,instanceof(检查是否是类的对象)
&,|,^,!,&&,|| &:两边都为true时,结果才为true。其他均为false。 |:两边都为false时,结果才为false。其他均为true。 ^:两边相同结果为false,两边不同结果为true。 &&和||在进行布尔值运算时会发生短路(不满足条件时就不再运算了)。 位运算符: <<:左移运算符,其实是乘以2的移动位数次幂 >>:右移运算符,实际是除以2的移动位数次幂 >>>:无符号右移。 >>与>>>的区别: >>右移最高位补什么由原有数据的最高位决定。 >>>右移无论最高位补什么都补0。
public class test1 { public static void main(String[] args){ System.out.println(9<<2); System.out.println(9>>2); System.out.println(9>>>2); System.out.println(-9<<2); System.out.println(-9>>2); System.out.println(-9>>>2); } } /* 结果是: 36 2 2 -36 -3 1073741821 */&:按位与运算 |:按位或运算 ^:按位异或运算
//利用异或将两个变量的值互换,不借助中间变量 public class test1 { public static void main(String[] args){ int m = 3,n = 8; System.out.println("n=" + n + ",m=" + m); n = n ^ m; m = m ^ n; n = n ^ m; System.out.println("n=" + n + ",m=" + m); } }~:该数的反码
格式:(条件表达式)?表达式1:表达式2; 如果条件为true,运算后的结果是表达式1。 如果条件为false,运算后的结果是表达式2。
switch语句
switch(表达式) { case 数值1: 执行语句; break; case 数值2: 执行语句; break; ... default: 执行语句; break; }1.被选择表达式只接受byte,short,int,char类型结果 2.语句内case无定义顺序,执行时先从第一个定义的case语句开始执行 3.switch语句只有碰到break或者执行到右大括号才会结束
while: 格式:
while(条件表达式) { 执行语句; }do while: 格式:
do{ 执行语句; }while(条件表达式);无论条件是否满足,循环体至少被执行一次。 for: 格式:
for(初始化表达式;循环条件表达式;循环后的操作表达式) { 执行语句; }break: 结束当前循环
public class test1 { public static void main(String[] args){ w:for(int i = 0;i < 3;i++){ for(int y = 0;y < 3;y ++){ System.out.println("i=" + i); break w; } } } } /* Java里面可以给break语句设置标记,标记跳出的循环 运行结果为:i=0 */continue: 结束本次循环继续下次循环
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…) { 执行语句; return 返回值; }
定义:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。 特点:与返回值类型无关,只看参数列表。
public int add(int x,int y){ return x + y; } public int add(int x,int y,int z){ return x + y + z; }同一种类型数据的集合.
格式:
//元素类型[] 数组名 = new 元素类型[元素个数或数组长度]; int[] arr = new int[5]; //元素类型[] 数组名 = new 元素类型[]{元素,元素,元素,...}; int[] arr = new int[]{3,5,1,7};int数组的初始化默认值为0,boolean类型的数组初始化为false,double类型数组初始化默认值为0.0。 (插播一些内存管理) 栈内存: 用于存储局部变量,当数据使用完,所占空间会自动释放。 堆内存: 数组和对象,通过new建立的实例都存放堆内存中。每一个实体都有内存地址值,实体中的变量都有默认初始化值,当它不再使用时,会被垃圾回收器回收。 上述代码在内存中的表示如图:
//对数组进行选择排序 //即每次拿数组未确定的头元素与剩下的数组元素比较 for(int i = 0;i < arr.length;i ++){ for(int j = i + 1;j < arr.length;j ++){ if(arr[i] > arr[j]){ int temp; temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } }举个栗子: int[][] arr = new int[3][]; 表示arr数组中有3个一维数组,每一个一维数组都是默认初始化值null,可以对它们分别进行初始化。
int[][] arr = new int[3][]; arr[0] = new int[3]; arr[1] = new int[1]; arr[2] = new int[2];对于上面的代码,它在内存中的表示如图:
To be continue…