献给大一新生的JavaSE入门篇章 & 大三秋招JavaSE

Java反射

反射实现有哪些?

Class.forName(“com.jdbc.cj.Driver.mysql”)
类名.class
对象名.getClass()

反射优缺点有哪些?

优点: 能够动态的获取类的实例,提高灵活性
缺点: 会降低性能,解决办法: 1. 如果多次创建某个对象的实例,使用缓存 2. 通过SetAccessible关闭JDK的安全检查来提高提升反射速度。

访问修饰符

这个本类指的是自己创建的这个类里面的范围,而不包括本类下面的一个默认修饰符修饰的类

修饰符使用范围?

四种修饰符可以用在属性和方法
类和接口只能用public 和 默认

为什么子类的访问修饰符得大于父类?

private修饰的属性和方法子类是不能继承的。
当子类对象当作父类对象使用的时候,如果父类是public 而子类是private,那么想要调用子类的方法就不行了,这不符合继承的特性。

类相关

super关键字

super关键字是指调用父类的当中的一些特征,super()方法必然会执行,通常来构造方法的第一行,所以在初始化子类的实例对象的时候先调用父类的初始化特征,注意: new 照样还是子类的对象,super只是给子类扩充属性
super关键字通常能够省略,有些情况不能省略:1.需要调用父类的属性,但是子类和父类有相同的属性名和方法名,如果子类想要调用父类的属性或者方法那么必须使用super来访问
super可以看作是对new 对象的属性的一个扩充,这也是为什么每个对象都有一个wait()和notify()方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ytUr0ACo-1690525391922)(C:\Users\13772\AppData\Roaming\Typora\typora-user-images\image-20230622102057654.png)]

String类
public class StringTest02 {
    public static void main(String[] args) {
        String s1 = "hello";
        // "hello"是存储在方法区的字符串常量池当中
        // 所以这个"hello"不会新建。(因为这个对象已经存在了!)
        String s2 = "hello";
        
        // == 双等号比较的是变量中保存的内存地址
        System.out.println(s1 == s2); // true

        String x = new String("xyz");
        String y = new String("xyz");
        
        // == 双等号比较的是变量中保存的内存地址
        System.out.println(x == y); //false
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j3e6OipR-1690525391922)(C:\Users\13772\AppData\Roaming\Typora\typora-user-images\image-20230622104128081.png)]

数组

Java当中的数组有一维、二维、三维(三维几乎用不到),数组的优点就是检索的过程会非常快,就比如说让你查100个大小数组和查10000个大小数组,你觉得哪个更快? 其实是一样快的,数组的存储位置的元素都是连续存储的,并且每个元素都有下标,而且每个元素的存储大小都是一样的,这样就知道了偏移量,所以只需要算一遍就能计算出最终结果。二维数组就是每个元素都是一个一维数组。

数组需要注意的点:
  1. 数组要求元素的类型一样
  2. 数组的每个元素的大小一样
  3. 数组元素的存储位置是连续的,方便查找

接口

  1. 接口和接口之间不需要有任何的继承关系就可以完成互转,可能会爆出ClassCastExceptino问题
  2. 类转化成没有任何关系的接口是可以的
  3. 类和类之间转化必须得有继承关系
  4. 接口不可以被实例化,接口当中的方法默认是public abstract ,方法是用public final 修饰,也就意味着接口当中所有的元素都是用public修饰,同样接口当中不能写方法体。
  5. 一个接口可以继承多个方法
  6. 一个类可以实现多个接口

接口的出现解决了之前的什么问题? 首先就是之前遗留下的类之间只能单继承的问题,而现实当中往往是多继承关系

Java加载与执行

	编译期:(可以在windows上)
		第一步:在硬盘的某个位置(随意),新建一个xxx.java文件
		第二步:使用记事本或者其它文本编辑器例如EditPlus打开xxx.java文件
		第三步:在xxx.java文件中编写“符合java语法规则的”源代码。
		第四步:保存(一定要将xxx.java文件保存一下)
		第五步:使用编译器(javac【JDK安装后自带】)对xxx.java文件进行编译。

		第六步:如果xxx.java文件中编写的源代码是符合语法规则的,编译会通过,
		如果xxx.java文件中编写的源代码违背了语法规则,那么编译器会报错,编译器
		报错之后class文件是不会生成的,只有编译通过了才会生成class字节码文件。
		并且一个java源文件是可以生成多个class文件的。(编译实质上是检查语法)

	运行期(JRE在起作用):(可以在windows上,也可以在其他的OS上。)
		第七步:如果是在Linux上运行,需要将windows上生成的class文件拷贝过去
		不需要拷贝源代码,真正运行的是字节码。(但是源代码也不要删除,有用)

		第八步:使用JDK自带的一个命令/工具:java(负责运行的命令/工具)执行字节码

		第九步:往下的步骤就全部交给JVM了,就不需要程序员干涉了。
		JVM会将字节码文件装载进去,然后JVM对字节码进行解释(解释器负责将字节码
		解释为1010101010..等的二进制)

		第十步:JVM会将生成的二进制码交给OS操作系统,操作系统会执行二进制码和
		硬件进行交互。

JDK\JRE\JVM

JDK包含JRE,JRE包含JVM,JVM不能独立存在,其他两个可以。
JDK是Java开发的工具箱,JRE是Java程序的运行时环境

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值