java学习——持续更新

一、基础内容

1.1 你问我答

1、JVM、JRE和JDK的关系?
在这里插入图片描述

  • JDK是啥?JDK全称JavaDevelopmentToolKit,是Java语言开发工具包。
  • JVM是啥?JVM全称Java Virtual Machine,是Java虚拟机。
  • JRE是啥?JRE全称Java Runtime Environment,是Java运行环境。

2、跨平台性是啥?原理是什么?
在这里插入图片描述

  • Java写的程序,在不同系统下都能运行
  • 原理?多亏了JVM,Java程序是通过JVM运行的,只要你安装了对应系统的JVM就可以运行咯。
  • C语言为什么不能跨平台?参考这篇文章:https://www.cnblogs.com/jmsjh/p/7808764.html

3、垃圾回收器(GC)是啥?Java不再使用的内存空间应当进行回收,比如for(int i=0;i<nums.length;i++){}。超过{}后,i就被回收了。垃圾回收器在Java程序运行过程中自动启用,程序员无法精确控制和干预。

1.2基础语法

一、额不知道咋写标题

  • 二进制、十六进制
  • 变量
  • 运算符
  • 方法

二、流程控制

  • 接收输入:Scanner input = new Scanner(System.in)。int i = input.nextInt();
  • 分支结构:if ; switch
  • 循环结构:while ; do while ; for
  • 退出循环:continue ; break
  • 退出多重循环:haha: ; break haha

三、数组

  • 创建格式
  • 获取数组长度:nums.length
  • 访问数组:下标法;遍历数组;
  • 数组常见问题:数组未赋值,出现空指针;数组越界;
  • 两个算法:冒泡法;二分法。https://blog.csdn.net/qq_43921008/article/details/124924851?spm=1001.2014.3001.5501

1.3 面向对象

一、类与对象
举个栗子

  • 类——PPT模板
  • 对象——根据PPT模板创建的具体PPT

二、创建对象时的内存分析

public static void main(String[] args) {
		Person p = new Person();
		p.name = "张三";
		p.age = 18;
		p.say();
	}

class Person{
	String name;
	int age;
	void say(){
		System.out.println("我是"+name+";我今年"+age+"了。");
	}
}

在这里插入图片描述

  • 栈内存中存放基本类型的变量和引用变量,如图中的p,他指向堆内存的一个对象的地址;
  • 堆内存中存放对象

三、方法的重载

  • 方法名相同,但参数不同:参数个数、参数类型、参数顺序(需要参数类型不同)都可以构成重载
  • 重载与返回值无关

四、构造方法

  • 需要自己写无参构造方法和全参构造方法,快捷方式如下
  • shift+alt+s,然后选择Generate Constructors from Superclass或者Generate Constructors using Fields,分别构造空参和带参数的构造函数
  • 构造方法的重载:参数列表参数类型不同、参数个数不同

五、权限修饰符
在这里插入图片描述

  • 使用频率最高的为public和private

六、static关键字

  • 表示静态,用来修饰成员变量和成员方法
  • 作用:创建独立于具体对象的域变量或方法,可以理解成类的变量或方法。被static修饰的变量或者方法,不依赖对象访问,可以通过类名直接调用。ps:未被private修饰;
    在这里插入图片描述

七、代码块
在这里插入图片描述

八、this与super关键字对比

this

  • 指的是当前对象的引用
  • 语法为:this. this()
  • this.有个作用:①this.属性名:如果方法里有个局部变量和成员变量同名,但程序又需要在该方法里访问这个被覆盖的成员变量,则必须使用 this 前缀;②this.方法名:让类中一个方法,访问该类里的另一个方法或实例变量(一般this可以省略)
  • this( )访问构造方法:this( ) 用来访问本类的构造方法,括号中可以有参数,如果有参数就是调用指定的有参构造方法。this();只能出现在构造方法的第一行
  • this不能出现再静态方法中,如果在 static 修饰的方法中使用 this 关键字,则这个关键字就无法指向合适的对象。静态不能访问非静态;

super

  • 指的是当前对象的父对象的引用
  • super.父类属性名:调用父类中的属性
  • super.父类方法名:调用父类中的方法
  • super():调用父类的无参构造方法
  • super(参数):调用父类的有参构造方法
  • 子类和父类中变量或方法名称相同时,用 super 关键字来访问。可以理解为 super

this与super

  • 子类和父类中变量或方法名称相同时,用 super 关键字来访问。可以理解为 super 是指向自己父类对象的一个指针。在子类中调用父类的构造方法。
  • this 是自身的一个对象,代表对象本身,可以理解为 this 是指向对象本身的一个指针。在同一个类中调用其它方法。
  • this 和 super 不能同时出现在一个构造方法里面,因为 this 必然会调用其它的构造方法,其它的构造方法中肯定会有 super 语句的存在,所以在同一个构造方法里面有相同的语句,就失去了语句的意义,编译器也不会通过。
  • this( ) 和 super( ) 都指的是对象,所以,均不可以在 static 环境中使用,包括 static 变量、static 方法和 static 语句块。
  • 从本质上讲,this 是一个指向对象本身的指针, 然而 super 是一个 Java 关键字。

九、重写与重载

重载:

  • 发生在一个类中,重载是一个类中多态性的一种表现
  • 重载要求同名方法的参数列表不同:参数类型、参数个数、参数顺序
  • 重载与返回值无关;

重写

  • 发生在继承中
  • 参数列表必须与被重写的方法相同
  • 返回类型必须与被重写方法相同
  • 访问权限不能比父类被重写方法权限更低
  • 父类的成员方法只能被它的子类重写
  • 声明为private和static的方法不能被重写,但是可以被再次声明
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值