第四天
1 ,num 1 三目运算符
格式 : 数据类型 变量名 = 关系表达式 ? 值1 : 值2 ; 案例 : int num = 1 >=3 ? 1 : 3; 如果表达式结果为true,把值1赋值给变量,否则将值2赋值给变量
2,循环结构
2.1 while循环
格式 : while(布尔表达式){ 循环体; }
执行流程 : 先进行布尔表达式判断,如果结果为false则结束循环,不执行循环体.
如果为true,则执行循环体,然后再重新对布尔表达式进行判断,直到布尔表达式结果为false结束循环
2.2 do - while循环
格式 : do{ 循环体; }while(布尔表达式);
执行流程 : 先进行循环体执行,然后进行布尔表达式判断,如果为false则停止循环,
如果表达式为true 则重新执行循环体,然后再次判断布尔表达式,直到布尔表达式为false为止停止循环
2.3 while循环 和 do - while循环 区别
while是先判定再执行,da_while是先执行再判定
3, for循环
3.1 for循环
格式 : for (表达式1,布尔表达式2,表达式3) { 循环体; }
执行流程 : 首先执行表达式1,再判断布尔表达式2,如果为false,则退出循环,不执行循环体。如果结果为true,则执行语句体,然后执行表达式3,再回到表达式2进行判定,如果结果为true,就重复上面的流程,直到结果为false为止
2.4.for循环的嵌套
格式 : for (表达式1,布尔表达式2,表达式3) { for (表达式4,布尔表达式5,表达式6) { 循环体; } }
执行流程 : 先执行外层表达式1,再判断外层布尔表达式2,如果为false,则退出循环,不执行循环体。如果结果为true,则进入内层循环。然后内层for循环结果为false时,进入到外层for循环判定,结果为true,重复上述步骤,直到外层for循环结果为false
第五天
1,方法
方法有四种类型,分别为 无参无返回值 ;无参有返回值 ;有参无返回值;有参有返回值
1.1 : .无参无返回值
格式 : public static void 方法名 () { 方法体; }
1.2 : 有参无返回值
格式: public static void 方法名 (数据类型 变量1,数据类型 变量2,...) { 方法体; }
1.3.无参有返回值
格式: public static 数据类型 方法名 () { return 数值; } 数值数据类型和方法名前面数据类型一致
数值数据类型和方法名前面数据类型一致
1.4.有参有返回值
格式: public static 数据类型 方法名 (数据类型 变量1,数据类型 变量2,.) { return 数值; } 数值数据类型和方法名前面数据类型一致
2,break 和 continue
2.1 break
break:可以用在switch和循环中 。表示循环终止
2.2 continue
continue:只能用在循环中。表示跳过当前循环进入到下一层循环中
第六天
1,数组
1.1,数组定义的三种方式
格式 : 数据类型[] 数组名字 = {值1, 值2, 值3, 值4, .......}; 数据类型[] 数组名字 = new 数据类型[数组长度]; 数据类型[] 数组名字 = new 数据类型[] {值1, 值2, 值3, 值4, .......}; 赋值 : 数组名[索引] = 值;
数组可以作为方法的参数,也可以作为方法的返回值
第七天
1,排序问题
1.1,选择排序
先从第一个开始遍历一遍数组找到最小的数据索引,然后根据索引获取的值和第一个交换位置,然后再从第二个开始遍历。依次类推直到遍历到最后一个则成功排序
public static void main (String[] args) { int[] arr = {32, 56, 28, 15,86,69}; for (int i = 0, i < arr.length - 1, i++) { int indax = i; for (int j = i + 1,j < arr.length, j++) { if (arr[indax] > arr[j]) { indax = j; } } int a = arr[indax]; arr[indax] = arr[i]; arri[i] = a; } System.out.println(Arrays.toString(arr)); }
1.2,冒泡排序
第一轮遍历将第一个与第二个比较,大的值放后面,小的放前面,再讲第二个与第三个比较,依次类推,最终将最大的一个放在最后面,后续重复第一轮,将因为上一轮最大值在最后,则每加一轮,最后比较位置减1;以此类推,最终可以完成排序
public static void main () { int[] arr = {32, 56, 28, 15,86,69}; for (int i = 0, i < arr.length, i++) { for (int j = 0, j < arr.length - i - 1, j++) { if (arr[j] > arr[j + 1]) { int a = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = a; } } } System.out.println(Arrays.toString(arr)); }
第八天
1,类
格式 : public class 类的名字 { 特征(Java中的变量) 行为(java中暂时不带static的方法) }
2.创建一个对象
1,必须现有类,才能创建一个对象
2,对象的创建必须在main主函数中
格式 :类 对象的名字 = new 类();
3.创建类和带有main主函数的类可以写在同1个文件中
现在写的类和带有main主函数,不在同一个文件中,是分开写的,但是也可以写在同一个文件中,此时文件的名字应该是带有main主函数测试类的名字。
package test; //当一个文件中有两个类的时候 ,只能有一个public 来修饰类 class Dog { //狗的名字 String name; //狗的重量 double weight; //狗肉的颜色 String color; //行为 public void lookHome() { System.out.println("狗能看家"); } } public class Demo3 { public static void main(String[] args) { //创建对象 Dog dog1 = new Dog(); dog1.name = "二哈"; dog1.weight = 30; dog1.color = "yellow"; System.out.println("dog1的名字:" + dog1.name); System.out.println("dog1的价格:" + dog1.weight); System.out.println("dog1的颜色:" + dog1.color); dog1.lookHome(); } }
4,构造方法
4.1无参构造方法
public 类的名字 () { }
4.2有参构造方法
public 类的名字 (数据类型 变量1,数据类型 变量2,........) { }
无参构造和有参构造是创建对象的前提,Java中会默认创建无参构造,若自己写的有,则会覆盖掉默认的无参构造。
第九天
1、JVM的内存分析
区域的名字 | 作用 |
---|---|
寄存器 | 给CPU使用的,和开发没有关系 |
本地方法栈 | JVM在执行操作系统的时候会使用,和咱们没有关系 |
方法区 | 存储的是字节码文件 class文件 |
堆区域 | 存储对象或者数组的数据,凡是 new的东西和堆有关 |
栈区 | 存储的是八大基本数据类型的数据和对象的引用(内存地址) |
2、构造代码块
代码块就是写在类里面,成员变量外面,与方法同级别,在调用对象的时候,会优先运行代码块。
3、成员变量和局部变量
成员变量就是描述类属性的变量。
局部变量就是只能在本大括号内(作用域)起作用的变量,遵循就近原则。
区别 | 成员变量 | 局部变量 |
---|---|---|
定位位置 | 类的大括号的后面 也叫属性 | 定义在方法体中 |
作用 | 描述一个类的属性或者特征的 | 在方法体中保存变量的值的 |
初始化的值 | 有默认的初始值String=>null int ==>0 | 没有默认的值使用的时候一定要赋值 |
作用域 | 作用整个类 | 只能在当前方法中使用 |
4、封装
封装就是一个思想,为了让开发人员更放心方便的使用所封装好的功能。在写封装代码的时候,为了更好的展示封装思想只会指定特定的入口来进行掉用,而且还能写对数据进行判断的逻辑,筛选出正确的数据,让数据输入的数据更安全。
一般需要写有参和无参的构造,还有成员变量所对应的get和set方法。