java知识点实示例,java常用知识点

谈谈你以Java的理解

平台无关性:一次编译,到处运行,归功于JVM

GC:垃圾回收机制,不需要像C++开发人员那样手动回收

语言特性:泛型,反射,lamda表达式等

面向对象:封装,继承,多态

类库:集合,并发库,IO, NIO等

异常处理:Java 内置异常类

Compile Once, Run Anywhere如何实现?

编译期

通过Javac将.java文件编译成字节码并存入到.class文件。

常用命令:java, javap -c

a0114939ac21

image.png

运行期

JVM将字节码.class文件加载到内存,转换成操作系统可以识别的指令。

JVM如何加载.class文件

a0114939ac21

image.png

Class Loader: 根据特定格式,加载.class文件到内存

Execution Engine :执行引擎,对命令进行解析

Heap: 堆, 共享区域

Method Area: 方法区, 共享区域

Stack: 线程栈,线程私有

PC Register: PC计数器 线程私有

Native Method Stack:本地方法栈,线程私有

Native Interface: 本地接口,引用不同开发语言的原生库为JAVA所用,主要语言是C/C++

Native Libraies: 本地库, C/C++接口

谈谈反射

Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象都能够调用它的任意方法和属性,这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。

简单示例:

package com.bootdubbo.controller;

public class Hello {

private String name;

public String visite(String who) {

return "hello " + who;

}

private String welcome(String str) {

return "welcome " + name;

}

}

package com.bootdubbo.controller;

import java.lang.reflect.Field;

import java.lang.reflect.Method;

public class Test {

public static void main(String[] args) throws Exception {

// 类全路径

Class cla = Class.forName("com.bootdubbo.controller.Hello");

// 获取对象,返回一个泛型对象,需要强制转换

Hello hello = (Hello) cla.newInstance();

Field nameField = cla.getDeclaredField("name");

nameField.setAccessible(true);

nameField.set(hello, "Tom");

// 可以获取类上的所方法,不管是public还是private修饰的

Method welMethod = cla.getDeclaredMethod("welcome", String.class);

// 默认false,必须设置成true

welMethod.setAccessible(true);

Object res = welMethod.invoke(hello, "we");

System.out.println(res);

// 获取public方法,也可以获取继承自己父类的方法

Method visiteMethod = cla.getMethod("visite", String.class);

Object res1 = visiteMethod.invoke(hello, "Jey");

System.out.println(res1);

}

}

类从编译到执行的过程

编译器(javac)将.java源文件编译为.class字节码文件

ClassLoader将.class字节码文件转换成为JVM中的Class对象

JVM根据Class对象实例化为T对象

谈谈ClassLoader

ClassLoader在java中起着非常重要的作用,主要工作在Class装载的加载阶段,其主要作用是从系统外部获得Class二进制数据流,它是java的核心部件,所有的Class都是由ClassLoader进行加载的,ClassLoader负责通过将Class文件里的二进制数据流装载进系统,然后交给java虚拟机进行连接,初始化等操作.

ClassLoader的种类:

BootStrapClassLoader: 用C++编写,加载核心库java.*

ExtClassLoader:

weixin151云匹面粉直供微信小程序+springboot后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值