语句
顺序语句
判断语句
- if…else:适用于条件在
某一个范围内
if嵌套使用 - switch…case:适用于
明确结果
的情况
switch(表达式){
case 常量1:
语句体;
break;
case 常量2:
语句体;
break;
....
default:
语句;
break;
}
case int [char] [byte] [short] [String] [enum]
- case穿透情况
- case语句后面必须要跟着break,否则会一直向下执行其他case中的语句,直至遇见break或者 } ,
但是不会穿透default
然后结束.- default如果放在最后可以省略break,如果放在其他位置就不可以省略,因为default执行完语句会
穿透下面case
语句,直到遇见break与 } 结束.
- 三元运算符
是个运算符,最后得到的是个常量
int result = a > b ? a : b;
- 三元运算符与if语句不同
- 格式不同
- 范围不同
- if里面可以输出语句,三元不行
循环语句
- for循环用于
循环次数明确的情况
for(int i = 0;i<arr.length;i++){
}
- while
先判断条件,满足才执行循环体
一般死循环情况搭配break使用
与for相反,一般用于不明确循环次数的情况
while(true){
循环体;
break;
}
- do…while语句
首先执行一次循环体然后再判断条件
int a = 0;
do{
a++;
}while(a > 3)
for与while的区别
- 场景不同:循环次数明确与不明确
- 格式不同
内存不同
:for中变量为局部变量,随着for方法结束而消失,while相对for范围更大
关键字
- continue:跳过满足当前条件的循环,还要执行下一次
- break:跳出当前循环
- return:很少单独使用,一般搭配方法使用,return 结果
方法
- 两个明确:明确返回类型,明确参数个数与类型
public static void[返回值类型] 方法名(形参类型 形参名1,形参类型 形参名2){
方法体;
System.out.println("void一般搭配sout输出语句使用,或者对引用类型进行赋值操作");
//如果需要返回值,就需要return关键字
[return 满足返回值类型的变量];
}
- overload:重载
方法名相同,区分大小写
无关返回值类型个数,无关形参类型,个数
jvm在调用方法时,自动判断符合条件的方法
- 方法之间时平级关系
方法只能互相调用,不能方法里面定义方法
数组
- 一种容器:int[] arr = {5,7} 常用
//静态初始化与动态初始化无法同时使用
int[] arr = new int[3] //动态初始化
int arr[] = new int[]{3,6,8} //静态初始化
创建过程
类比其他引用类型的创建过程- jvm的内存分配
方法区:字节码区:存储.class文件:划分区域存储各个方法; static:存储静态方法,比如main(); 常量池
栈: main()首先被压入栈,按照顺序执行语句,需要调用方法就从字节码区拿取并压入栈;
堆:new 的对象- 数组创建过程
int[] arr = new int{2,5};
栈中先为arr变量开辟空间,然后在堆中初始化一个int型数组,并进行赋值
int默认0; double默认0.0; boolean默认false
将堆中int数组的地址值返回给栈中的arr
数组调用方法,形参会改变实参的值(传递的是地址值),基本类型与string
则不会(传递的为数值)- 数组逆序
for(int i = 0;i <= arr.length/2;i++){
int temp = arr[i];
arr[i] = arr[arr.length-1-i];
arr[arr.length-1-i] = temp;
}
冒泡排序
//每一轮都是找出左边未排序队列中最大值挪到右边已排序队列,一共要进行arr.length-1轮
//每一轮的都是左边未排序相邻两两进行对比
for(int i = arr.length-1;i != 0;i++){
for(int j = 0;j < i;j++){
if(arr[j] > arr[j +1]){
int temp = arr[j];
arr[j] = arr[j +1];
arr[j + 1] = temp;
}
}
}
类
- 现实生活中每一种事物都可以抽象成类
面向对象基于面向过程
- 万物皆对象
- 化执行者为调用者:只要结果不要过程
-定义
class Student{ //大驼峰命名法
//成员变量
private String name; //属性需要私有化
private int age;
//成员方法
public void setName(String name){
this.name = name; //属性赋值需要调用public的get与set方法
}
private void getName(){
System.out.println("年龄为:" + name);
}
public void show(){ //私有方法可以通过public方法来调用
getName();
}
}
-
三大特征
- 封装
- 继承
- 多态
-
常见类
- 随机数
Math.random()
产生[0.0 -- 1.0)
int random = (int)(Math.random() * 100 + 1) //产生1到100之间的随机数