韩顺平java基础-第一阶段(建立编程思想)1-7章

第三章 变量

3.10.2 强制类型转换细节

在这里插入图片描述

3.11 Java_String和基本数据类型的转换

在这里插入图片描述
在这里插入图片描述

第四章 运算符

P65
P65。
i++和++i的底层逻辑。

4.3.2 &&和&的使用区别

在这里插入图片描述
在这里插入图片描述

4.3.5 逻辑运算符练习题

在这里插入图片描述
P75
第一题,先进行x == 6 的比较,然后x再执行x++自增。

在这里插入图片描述
注意==与=的使用;赋值真结果就为真,赋值假结果就是假。

4.4.2 赋值运算符的特点

在这里插入图片描述
在这里插入图片描述

4.7.2 标识符命名规范

在这里插入图片描述

4.11 原码,反码,补码

在这里插入图片描述

第五章 程序控制结构

5.5.4 switch 注意事项和细节讨论

  1. 表达式数据类型,应和case 后的常量类型一致,或者是可以自动转成可以相互比较的类型,比如输入的是字符,而常量是 int
  2. switch(表达式)中表达式的返回值必须是:(byte,short,int,char,enum[枚举],String)
  3. case子句中的值必须是常量,而不能是变量
  4. default子句是可选的,当没有匹配的case时,执行default
  5. break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有写break,程序会顺序执行到switch结尾,除非遇到break;

第6章 数组、排序和查找

6.5 数组赋值机制

  1. 基本数据类型赋值,这个值就是具体的数据,而且相互不影响。
    int n1 = 2; int n2 = n1;
  2. 数组在默认情况下是引用传递,赋的值是地址。
    在这里插入图片描述

6.14.2 二维数组存在形式

在这里插入图片描述

6.14.4 使用方式 3: 动态初始化-列数不确定(重要)

public class TwoDimensionalArray03 {
    //编写一个 main 方法
    public static void main(String[] args) {
        /*
        看一个需求:动态创建下面二维数组,并输出
        i = 0: 1
        i = 1: 2 2
        i = 2: 3 3 3 一个有三个一维数组, 每个一维数组的元素是不一样的
        */
        //创建 二维数组,一个有 3 个一维数组,但是每个一维数组还没有开数据空间
        int[][] arr = new int[3][];
        for(int i = 0; i < arr.length; i++) {//遍历 arr 每个一维数组
            //给每个一维数组开空间 new
            //如果没有给一维数组 new ,那么 arr[i]就是 null
            arr[i] = new int[i + 1];
            //遍历一维数组,并给一维数组的每个元素赋值
            for(int j = 0; j < arr[i].length; j++) {
                arr[i][j] = i + 1;//赋值
            }
        }
        System.out.println("=====arr 元素=====");
        //遍历 arr 输出
        for(int i = 0; i < arr.length; i++) {
            //输出 arr 的每个一维数组
            for(int j = 0; j < arr[i].length; j++) {
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();//换行
        }
    }
}

6.16 二维数组使用细节和注意事项

  1. 一维数组的声明方式有:
    int[] x 或者 int x[]
  2. 二维数组的声明方式有:
    int y 或者 int[] y[] 或者 int y[] []
  3. 二维数组实际上是由多个一维数组组成的,它的各个一维数组的长度可以相同,也可以不相同。比如: map[] [] 是一个二维数组
    在这里插入图片描述

第 7 章 面向对象编程(基础)

7.1.5 对象在内存中的存在形式 (重要!!!!!)

在这里插入图片描述
PS1:new类时,先会把类信息加载到方法区------->然后开始根据属性不同分配不同大小的空间,如果是字符串,分配一个地址,指向常量池,如果是基本数据类型就放堆里------->最后把堆地址返回给cat类

PS2:字符串在堆里存的是地址,存在方法区里一个叫常量池的地方,按照引用方式来存放

7.1.9 内存分配机制

在这里插入图片描述
PS:对象是引用数据类型,是引用传递,即地址传递。
PS:首先在方法区右加载person类信息,然后new在堆里面开空间,有空间就有地址,空间里面的值是默认值,对象创建完成后把堆空间地址返回给p1;下一步找到age赋值,而对于字符串来说,会在方法区左的常量池创建,然后给堆返回创建好的地址

7.1.10 类和对象内存分配机制与流程

在这里插入图片描述
在这里插入图片描述

7.2.2 方法调用机制

在这里插入图片描述

  1. 调用方法会产生一个新栈。当方法返回后,方法栈就会销毁。

7.2.5 成员方法使用细节

在这里插入图片描述
在这里插入图片描述

7.4.4 递归重要规则

  1. 执行一个方法时,就创建一个新的受保护的独立空间(栈空间)

  2. 方法的局部变量是独立的,不会相互影响,比如n变量

  3. 如果方法中使用的是引用类型变量(比如数组,对象),就会共享该引用类型的数据

  4. 递归必须向退出递归的条件逼近,否则就是无限递归,出现StackOverflowError,死龟了

  5. 当一个方法执行完毕,或者遇到return,就会返回,遵守谁调用,就将结果返回给谁,同时当方法执行完毕或者返回时,该方法也就执行完毕。

7.5 方法重载

在这里插入图片描述

7.6 可变参数

7.6.1 可变参数的基本概念

在这里插入图片描述

7.6.2 可变参数的案例

在这里插入图片描述
在这里插入图片描述

7.6.3 可变参数注意事项和使用细节

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.7 作用域

7.7.1 基本使用

在这里插入图片描述

  1. 注意第四条!全局变量(类的属性)有默认值,局部变量没有默认值。

7.7.2 注意事项和使用细节

在这里插入图片描述
在这里插入图片描述

7.8 构造器/构造方法

7.8.1 基本介绍&语法

在这里插入图片描述
在这里插入图片描述

7.8.3 构造器的注意事项和使用细节

在这里插入图片描述
在这里插入图片描述

  1. 注意第7点,非常重要!一旦自己定义了构造器,默认的就被覆盖率,不是重载!如果还想使用,就显示定义一下,即手动重载一下。

7.9 对象创建的流程分析

在这里插入图片描述
在这里插入图片描述

7.10.4 this的注意事项和使用细节

在这里插入图片描述
在这里插入图片描述

  1. 普通name是就近原则,this.name是访问属性,准确定位

7.10.5 课堂练习题

在这里插入图片描述

public class test {
	public static void main(String[] args) {
		Person p1 = new Person("mary", 20);
		Person p2 = new Person("jack", 30);
		System.out.println("p1和p2比较的结果是" + p1.compareTo(p2));
	}
}

class Person {
	String name;
	int age;

	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}

	public boolean compareTo(Person p) {
		//名字和年龄完全一样
		// if(this.name.equals(p.name) && this.age == p.age) {
		// 	return true;
		// } else {
		// 	retrun false;	
		// }
		return this.name.equals(p.name) && this.age == p.age;
	}
}

7.12 本章练习题

在这里插入图片描述

public class test {
	public static void main(String[] args) {
		A01 a01 = new A01();
		double[] arr = null; 
		Double res = a01.max(arr);//返回的是包装类的对象
		if(res != null) {
			System.out.println("arr的最大值:" + a01.max(arr));	
		} else {
			System.out.println("arr的输入有误");	

		}
	}
}

// 思路分析:
// 1.类名 A01
// 2.方法名 max
// 3.形参 (double[])
// 4.返回值 (double)
// 5.先完成正常的业务,再考虑代码的健壮性,再优化代码

class A01 {
	public Double max(double[] arr) {
		//如果一个元素都没有/传入null怎么返回呢?注意顺序,注意上面的代码也要改变
		if(arr != null && arr.length > 0) {
		//null是没有分配地址,[]是分配地址没有值
		double max = arr[0];//假定第一个元素是最大的开始
		for(int i = 1; i < arr.length; i++) {
			if(arr[i] > max) {
				max = arr[i];
				}
			}
		return max;
		} else {
			return null;//用包装类,如果一个都不满足,返回空
		}
	}
}

  1. 注意这段代码的健壮性操作,max方法返回的是Double封装类,可以返回null。而不是返回double数据类型,double数据类型不能返回null。

第 8 章 面向对象编程(中级)

8.1.3 idea快捷键

在这里插入图片描述

8.1.4 模板

在这里插入图片描述

8.2 包

8.2.3 快速入门

在这里插入图片描述

  1. 俩同名类不可以同时import引入,第一个引入后,使用不用加前缀,其他的在代码中引用就要加前缀区分。

8.3 访问修饰符

8.3.1 访问修饰符规则

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值