美文网首页
java常用知识点

java常用知识点

作者: 32a08e1b7af0 | 来源:发表于2019-05-23 11:22 被阅读0次

谈谈你以Java的理解

平台无关性:一次编译,到处运行,归功于JVM
GC:垃圾回收机制,不需要像C++开发人员那样手动回收
语言特性:泛型,反射,lamda表达式等
面向对象:封装,继承,多态
类库:集合,并发库,IO, NIO等
异常处理:Java 内置异常类

Compile Once, Run Anywhere如何实现?

编译期

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

常用命令:java, javap -c


image.png

运行期

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

JVM如何加载.class文件

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<T>对象

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

谈谈ClassLoader

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

ClassLoader的种类:

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

相关文章

  • Android面试知识点合集

    本文均为Android常用知识点,搜集整理以供复习参考Java知识点总结,请点我 1. 常用的布局有哪些? Fra...

  • Java 基础必会知识点

    更详细Java面试请点击这里 Java 基础必会知识点 Java 关键字及功能熟悉 Java 常用关键字的拼写及功...

  • 1.21(Java变量)

    知识点 一. Java 中常用关键字: 二. Java标识符什么是标识符:标识符就是用于给 Java 程序中变量、...

  • java常用知识点

    谈谈你以Java的理解 平台无关性:一次编译,到处运行,归功于JVMGC:垃圾回收机制,不需要像C++开发人员那样...

  • java常用知识点

    获取当前的方法执行栈:new RuntimeException().getStackTrace() 解析命令行:P...

  • equals和hashCode

    Java 常用常见知识点 在实际工作中或者面试中总会遇到下面的Java基础: [x] equals方法 [x] h...

  • Java程序员需要了解哪些技术?

    Java程序员需要了解哪些技术?Java程序员常用的技术有哪些?在学习Java的时候,可能需要学习的知识点有很多,...

  • Java之Spring能做什么(广州中软卓越)

    说完了Java之Spring的常用注解和结构,那么今天广州中软卓越Java培训课程说最后一个知识点:Spring能...

  • 十年架构师吐血整合Java开发必备宝典,凭借这份宝典定级腾讯T3

    从Java基础、JavaWeb基础到常用的框架再到面试题都有完整的教程,几乎涵盖了Java后端必备的知识点。很多知...

  • Java从入门到精通宝典

    从Java基础、JavaWeb基础到常用的框架再到面试题都有完整的教程,几乎涵盖了Java后端必备的知识点。 Ja...

网友评论

      本文标题:java常用知识点

      本文链接:https://www.haomeiwen.com/subject/qylvzqtx.html