关键字,标识符,变量,运算符,程序流程控制,数组
关键字
所有字母都为小写
保留字
标识符
java中的名称命名规范
包名:多单词组成时所有字母都小写:xxxyyyzzz
类名,接口名:多单词组成时,所有的首字母大写:XxxYyyZzz
变量名,方法名:多单词组成时,前一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
常量名:所有字母都大写,多单词时每个单词用下划线连接:XXX_YYY_ZZZ
变量
先声明后使用
数据类型 变量名 =初始化值
变量的分类
- 基本数据类型
- 引用数据类型
变量之间的运算
- 自动类型转换 :容量小的自动转换为容量大的
- 强制类型转换:容量大的转换为容量小的,要使用强制类型转换符()
运算符
算术运算符 :+ - * / ++a 先自增再运算 a++ 先运算再自增
赋值运算符:+= -= *= /= %=
比较运算符:== != < > <= >= instanceof(检查是否是类的对象y)
逻辑运算符:& 逻辑与 && 短路与 | 逻辑或 || 短路或 ! 逻辑非 ^ 逻辑异或
位运算符: << 左移 >> 右移 >>> 无符号右移 ^ 异或运算 ~ 反码
三元运算符:条件表达式 ? 表达式1: 表达式2 表达式1,2得保持数据类型一致
流程控制
分支结构
- if-else
- switch-case
switch(变量){
case 值1:
break;
case 值2:
break;
case 值3:
break;
degault:
break;
break:跳出当前循环,变量可以取:char byte short int 枚举 String(jdk1.7)
循环结构
1.while循环
while(条件){ //循环语句 }
条件:可以是beelan类型的值,变量和表达式,还可以是一个结果为boolean的方法
2.do-while循环
do{ //循环操作语句 }while(循环条件);
3.for循环
for(表达式1;表达式2;表达式3){ 循环操作; }
表达式1:参数初始化
表达式1:条件判断
表达式1:更新循环变量
三个表达式都可以省掉 表达式2省掉会出现死循环 , 表达式3会导致条件永远成立形成死循环
数组
作用: 存储相同数据类型的一组数据
对同类型数据进行集中管理,比如存储和遍历
数组的声明
数组类型[ ] 数组名;
声明并创建数组
数据类型 [ ] 数组名=new 数据类型[大小]
初始化数组
方法1:(静态初始化)边声明边赋值
int[ ] score={66,67,68}
int[ ] score=new int[ ]{66,67,68}
方法2:(动态初始化)
常用数组查找法
线程查找法
二分查找法 取下标中间值
常用数组排序算法
冒泡排序: 比较相邻的元素
选择排序法
插入排序法
Arrays类用法
package com.tanlei.newer.shuzu; import java.util.Arrays; /** * @author tanlei * */ public class ArraysUtilDemo { public static void main(String[] args) { int [] arrays= {1,3,4,5,6,2}; //数组拷贝 int [] arrays2=Arrays.copyOf(arrays, 10); for (int i = 0; i < arrays2.length; i++) { System.out.println(arrays2[i]); } System.out.println("*****************************"); //拷贝指定数组中的指定范围内的数据 int[] arrays3= Arrays.copyOfRange(arrays, 4, 5); for (int i = 0; i < arrays3.length; i++) { System.out.print(arrays3[i]); } System.out.println("*****************************"); //比较两个数组是否相等 int[] arrays4= {1,2,4,3,5}; boolean flag=Arrays.equals(arrays, arrays4); System.out.println(flag); //数组填充 int[] arrays5= new int[10] ; Arrays.fill(arrays5,2,5,6); for (int i = 0; i < arrays5.length; i++) { System.out.println(arrays5[i]); } //对数组进行排序 Arrays.sort(arrays5,2,6); for (int i = 0; i < arrays5.length; i++) { System.out.print(arrays5[i]); } //二分法查找(下标) int index=Arrays.binarySearch(arrays5, 3); System.out.println(index); System.out.println("*****************************"); //使用System这个类的方法来拷贝数组从o开始拷5个 从数组第三个下标起 int[]arraydeo5=new int[10]; System.arraycopy(arrays2, 0, arraydeo5, 3, 5); for (int i = 0; i < arraydeo5.length; i++) { System.out.println(arraydeo5[i]); } } }
二维数组
声明
int[ ] [ ] arr=new int[10 ][ ]
int[ ] [ ] arr=new int[10 ][20 ]
一维数组决定大小
初始化
int[ ] [ ] arr={{1,2},{2,3}};
动态初始化
String [ ] [ ] arr=new Strng[3][ ];
arr[0]=new String[2]
arr[1]=new String[3]
arr[2]=new String[4]
杨辉三角形
package com.tanlei.newer.shuzu; public class YanHui { public static void main(String[] args) { //声明一个8行8列的数组 int row=8;//行数 int [] [] p=new int[row][row]; for(int i=0;i<row;i++) { for (int j = 0; j <=i; j++) { //判断第一列和对角线列的元素值为1 if(j==0||j==i) { p[i][j]=1; }else { //其他元素的值取正上方和左上方的和 p[i][j]=p[i-1][j]+p[i-1][j-1]; } } } //打印输出 for (int i = 0; i < row; i++) { for (int j = 0; j <row; j++) { System.out.println(p[i][j]+" "); } System.out.println(); } } }