Java语言是一种具有动态性的解释型语言,类(class)只有被加载到JVM后才能运行。当运行指定程序时,JVM会将编译生成的.class文件按照需求和一定的规则加载到内存中,并组织成为一个完整的Java应用程序。这个加载过程是由类加载器完成,具体来说,就是由ClassLoader和它的子类来实现的。类加载器本身也是一个类,其实质是把类文件从硬盘读取到内存中。

类的加载方式分为隐式加载和显示加载。隐式加载指的是程序在使用new等方式创建对象时,会隐式地调用类的加载器把对应的类加载到JVM中。显示加载指的是通过直接调用class.forName()方法来把所需的类加载到JVM中。

任何一个工程项目都是由许多类组成的,当程序启动时,只把需要的类加载到JVM中,其他类只有被使用到的时候才会被加载,采用这种方法一方面可以加快加载速度,另一方面可以节约程序运行时对内存的开销。此外,在Java语言中,每个类或接口都对应一个.class文件,这些文件可以被看成是一个个可以被动态加载的单元,因此当只有部分类被修改时,只需要重新编译变化的类即可,而不需要重新编译所有文件,因此加快了编译速度。

在Java语言中,类的加载是动态的,它并不会一次性将所有类全部加载后再运行,而是保证程序运行的基础类(例如基类)完全加载到JVM中,至于其他类,则在需要的时候才加载。

类加载的主要步骤:

1>装载。根据查找路径找到相应的class文件,然后导入。

2>链接。链接又可分为3个小步:

1)检查,检查待加载的class文件的正确性。

2)准备,给类中的静态变量分配存储空间。

3)解析,将符号引用转换为直接引用(这一步可选)

3>初始化。对静态变量和静态代码块执行初始化工作。

22、char 型变量中能不能存贮一个中文汉字,为什么?

可以

1 bit = 1 二进制数据

1 byte = 8 bit

1 字母 = 1 byte = 8 bit

1 汉字 = 2 byte = 16 bit

Java基本数据类型

Int: 4 byte

short: 2 byte

long: 8字节

byte: 1字节(8bit)

char: 2字节

float: 4字节

double: 8字节

在C语言中,char类型占1一个字节,而汉子占2个字节,所以不能存储。

在Java中,char类型占2个字节,而且Java默认采用Unicode编码,以个Unicode码是16位,所以一个Unicode码占两个字节,Java中无论汉子还是英文字母都是用Unicode编码来表示的。所以,在Java中,char类型变量可以存储一个中文汉字。

24、静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同?

首先,内部类的创建依赖一个外部内对象作为宿主,就跟寄生虫一样,内部内必须寄生在外部类对象中才能创建实例。

其次,静态都是用来修饰类的内部成员的。比如静态方法,静态成员变量,静态常量。它唯一的作用就是随着类的加载(而不是随着对象的产生)而产生,以致可以用类名+静态成员名直接获得。

这样静态内部类就可以理解了,因为这个类没有必要单独存放一个文件,它一般来说只被所在外部类使用。并且它可以直接被用 外部类名+内部类名 获得。

25、Java 中会存在内存泄漏吗,请简单描述。

所谓内存泄露就是指一个不再被程序使用的对象或变量一直被占据在内存中。Java中有垃圾回收机制,它可以保证一对象不再被引用的时候,即对象编程了孤儿的时候,对象将自动被垃圾回收器从内存中清除掉。由于Java 使用有向图的方式进行垃圾回收管理,可以消除引用循环的问题,例如有两个对象,相互引用,只要它们和根进程不可达的,那么GC也是可以回收它们的。

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-61031-5.html

java5的递归算法_java递归算法 java面试题(5)相关推荐

  1. java中的递归算法_java递归算法实例分析

    递归算法设计的基本思想是: 对于一个复杂的问题,把原问题分解为若干个相对简单类同的子问题,继续下去直到子问题简单到能够直接求解,也就是说到了递推的出口,这样原问题就有递推得解. 在做递归算法的时候,一 ...

  2. java面试题大全答案版文库_java高级面试题带答案

    java高级面试题,java面试题大全带答案,线程面试题,java面试宝典2019 1.[请对以下在J2EE中常用的名词进行解释(或简单描述)](http://www.wityx.com/post/1 ...

  3. 递归算法介绍及Java应用实战

    转载自 递归算法介绍及Java应用实战 什么是递归算法 递归算法是把问题转化为规模缩小了的同类问题的子问题,然后递归调用函数(或过程)来表示问题的解.一个过程(或函数)直接或间接调用自己本身,这种过程 ...

  4. java异常处理试题答案_Java 面试题和答案 - (下)

    第一篇讨论了面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,本章主要讨论异常处理,Java小应用程序,Swing,JDBC,远程方法调用(RMI),Servle ...

  5. java招聘 试题_JAVA现场招聘考试题(一)

    试题来源 互联网 中*国际笔试题(一) 一.判断题(共10题,每小题1分,共10分,占10%) 1.java程序里,创建新的类对象用关键字new. 2.类及其属性.方法可以同时有一个以上的修饰符来修饰 ...

  6. java面试题:集合_Java:选择正确的集合

    java面试题:集合 这是在您的应用程序中选择Set , List或Map的正确实现的快速指南. 最好的通用或"主要"实现可能是ArrayList,LinkedHashMap和Li ...

  7. java笔试题_Java面试才到笔试就没有然后了?快来签收,高频笔试57题及解答

    前言 很多人面试之前,可能没有在互联网公司工作过或者说工作过但年头较短,不知道互联网公司技术面试都会问哪些问题? 再加上可能自己准备也不充分,去面试没几个回合就被面试官几个问题打蒙了,甚至笔试都过不了 ...

  8. java 字符串 面试题_Java常用类String的面试题汇总(java面试题)

    1.比较两个字符串时使用"=="还是equals()方法? 当然是equals方法."=="测试的是两个对象的引用是否相同,而equals()比较的是两个字符串 ...

  9. java面试题常见的坑_java那些年踩过面试题的坑,你是否依旧记忆犹新!

    那些年做过经典的JAVA面试题,看看你是否依旧能够全部做对呢?有时候停下脚步回头瞅瞅也是一件很有意思的事情.答案在最后哦. 2题解释: public void two(){ int i = Inter ...

最新文章

  1. 使用Apache对Tomcat进行负载均衡
  2. linux 进程做成服务,Linux自定义后台服务进程
  3. python手机版idle-如何在Ubuntu上安装Python IDE IDLE
  4. vue 公用页面引用_关于vue全局引用公共的js和公共的组件的折腾
  5. 10周带你手推机器学习算法公式,30+视频为你讲解Sklearn库应用
  6. linux find查找文件然后删除,linu查找find命令及删除7天前的文件
  7. C语言大写字母E转小写e,C语言 大小写字母转换
  8. Spring : Spring Boot 自定义PropertySourceLoader
  9. 删除购物车ajax js,在购物车中使用ajax在woocommerce中移除产品
  10. MongoDB密码设置(基于windows)
  11. 消息分流器-HANDLE_MSG
  12. mysql分页下表_有关Mysql分表分页问题
  13. 音视频常见播放器框架分析
  14. 中国石油安全问题及解决对策
  15. 计算机网络之五:基本器件(网卡,集线器,交换机,路由器)
  16. Oracle:Locked by transaction: console [表名]
  17. kubernetes部署分布式存储longhorn
  18. html手机上怎么修改,怎么用手机修改路由器密码?
  19. Dockerfile构建Springboot镜像
  20. 网络安全关于Windows下BAT脚本使用

热门文章

  1. centos7虚拟机共享本机磁盘的方法
  2. android绘制环形进度_Android动态自定义圆形进度条
  3. Java中如何实现代理机制(JDK、CGLIB)
  4. JS之onsubmit事件与组织事件外延
  5. ABAP:从例子学习ABAP
  6. 搜索引擎基础概念(1)—— 倒排索引
  7. hadoop中map和reduce的数量设置问题
  8. 每日一测4(装箱与拆箱)
  9. swift UIActivityIndicatorView
  10. 高德地图 android 调用 amap.clear()后定位蓝点消失 如何重新显示定位