1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?

可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。

2、short s1= 1; s1= s1+1; 有没有错?

s1+1运算时会自动提升类型,结果是int,赋值给s1时,将报告需要强转类型的错误。

3、short s1= 1; s1 += 1;有没有错?

+=是java规定的运算符,编译器会对它进行特殊处理,因此可以正确编译。

4、使用final关键字修饰一个变量时,引用的内容一定不能变?

使用final修饰变量时,是引用变量(也就是地址)不能变,引用变量所指向的对象中的内容还是可以改变的

5、是否可以从static方法内对非static方法调用?为什么?

不可以。因为非static方法是与对象关联的,必须创建一个对象,才可以在该对象上进行方法调用(对象.方法)。而static方法调用时不需要创建对象,可以直接调用。如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上的呢?这个逻辑无法成立。

6、Overload和Override的区别?

重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。

重写Override表示子类中的方法可以与父类中的方法的名称和参数完全相同,子类对象调用这个方法时,将调用子类中的定义方法,这就把父类中的方法覆盖了,这也是面向对象编程的多态性的一种表现。

7、Overloaded的方法是否可以改变返回值的类型?

如果几个重载Overloaded的方法的参数列表不一样,它们的返回者类型当然也可以不一样。

如果两个方法的参数列表完全一样,不管返回值是否相同,都不允许。因为无法确定编程者倒底是想调用哪个方法了,因为他们被调用时看起来完全相同。

8、接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concreteclass)?抽象类中是否可以有静态的main方法?

接口可以继承接口。抽象类可以实现(implements)接口,抽象类可以继承具体类。抽象类中可以有静态的main方法。

 记住抽象类与普通类的唯一区别就是不能创建实例对象和允许有abstract方法。

9、Java中实现多态的机制是什么?

靠的是父类(或接口定义)的引用变量可以指向子类(或具体实现类)的实例对象。

而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,而不是引用变量的类型中定义的方法。

10、abstractclass和interface有什么区别?

抽象类可以有构造方法,接口中不能有构造方法。

抽象类中可以有普通成员变量,接口中没有普通成员变量

抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。

抽象类中的抽象方法类型可以是public,protected,接口中的抽象方法只能是public类型的,并且默认为public abstract。

7. 一个类可以实现多个接口,但只能继承一个抽象类。

11、String s = "Hello";s = s + "world!";执行后,原始的String对象中的内容变了没有?

没有。因为String被设计成不可变类,所以它的所有对象都是不可变对象。只是s不再指向旧的对象了。

12、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d";

javac编译可以对字符串常量直接相加的表达式进行优化直接得出答案,不必要等到运行期再去进行加法运算处理

这行代码被编译器在编译时优化后,相当于直接定义了一个”abcd”的字符串,所以,上面的代码应该只创建了一个String对象。

13、final, finally, finalize的区别。

final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。

finally是异常处理语句结构的一部分,表示总是执行。

finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法.

14、error和exception有什么区别?

error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。                  exception表示程序还能够克服和恢复的问题

15、Java 中堆和栈区别?
栈常用于保存方法帧和局部变量,而对象总是在堆上分配。

栈通常都比堆小,也不会在多个线程之间共享,而堆被整个 JVM 的所有线程共享。

栈:在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java 会自动释放掉为该变量分配的内存空间,该内存空间可以立即被另作它用。

堆:堆内存用来存放由 new 创建的对象和数组,在堆中分配的内存,由 Java 虚拟机的自动垃圾回收器来管理。

16、能将 int 强制转换为 byte 类型的变量吗?(引申到所有大类型转小类型)
        实际中,我们可以做强制转换,不会报错。

但是存在大类型转小类型的通病: int 是 32 位的,而 byte 是 8 位的,如果强制转化,int 类型的高 24 位将会被丢弃,所以尽量不要这样做。

17、hashCode有什么用?与 a.equals(b) 有什么关系?
        hashCode方法对应对象的 hash 值。它常用于基于 hash 的集合类,如 Hashtable、HashMap、LinkedHashMap等等。根            据 Java 规范,两个使用 equal() 方法来判断相等的对象,必须具有相同的 hash code。

18、垃圾回收的优点和原理。

 垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。

原理:可以给对象添加一个被引用的计数器,就可以判断是否已经是无引用对象。但是难以解决循环引用问题。

如果不下小心直接把 Obj1-reference 和 Obj2-reference 置 null。则在 Java 堆当中的两块内存依然保持着互相引用无法回收。

可达性分析法:通过一系列的 ‘GC Roots’ 的对象作为起始点,从这些节点出发所走过的路径称为引用链。当一个对象到 GC Roots 没有任何引用链相连的时候说明对象不可用。

19,java中会存在内存泄漏吗

内存泄漏:指一个不再被程序使用的对象或变量一直被占据在内存中。java中有垃圾回收机制,它可以保证当对象不再被引用的时候,对象将自动被垃圾回收器从内存中清除掉。

由于Java使用有向图的方式进行垃圾回收管理,可以消除引用循环的问题,例如有两个对象,相互引用,只要它们和根进程不可达,那么GC也是可以回收它们的。

java中的内存泄露的情况:长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露.

尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,这就是java中内存泄露的发生场景。通俗地说,就是程序员可能创建了一个对象,以后一直不再使用这个对象,这个对象却一直被引用,即这个对象无用但是却无法被垃圾回收器回收的,这就是java中可能出现内存泄露的情况,例如,缓存系统,我们加载了一个对象放在缓存中(例如放在一个全局map对象中),然后一直不再使用它,这个对象一直被缓存引用,但却不再被使用。

小猫的java基础知识点汇总(上)相关推荐

  1. 小猫的java基础知识点汇总(下)

    1.线程和进程有什么区别? 进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位 线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务. 不同的进程使用不同的内存空间,而 ...

  2. java基础知识大全,java 基础知识点汇总

    java 基础知识点汇总 问题一:我声明了什么! String s = "Hello world!"; 许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个Strin ...

  3. Java常见知识点汇总

    Java常见知识点汇总 基础概念与常识 1.Java 语言有哪些特点? 2.JVM vs JDK vs JRE 3.什么是字节码?采用字节码的好处是什么? 4.为什么不全部使用 AOT 呢? 5.为什 ...

  4. java重要基础知识点_必看 | 新人必看的Java基础知识点大梳理

    原标题:必看 | 新人必看的Java基础知识点大梳理 各位正在认真苦学Java的准大神,在这烈日炎炎的夏季里,老九君准备给大家带来一个超级大的"冰镇西瓜,"给大家清凉一下,压压惊. ...

  5. java基础案例教程前4章知识点_java学习记录4 Java基础知识点

    java学习记录4 Java基础知识点 1. 注释 单行注释 使用"//"开头,后面是注释的内容 一般在要注释的语句的上面加注释 多行注释 以"/*"开头,以& ...

  6. java基础知识点整理一

    java基础知识点整理一 引言 '''突然发觉任何一门语言的基础知识部分,都比较杂一些.如果个人经过梳理之后,知识体系系统化,可以让基础更加牢靠一些.但是还是会有一些遗忘.所以,我想把一些比较重要但是 ...

  7. 整理的java基础知识点笔记

    java基础知识点 (涉及到图片的资源因为在电脑本地,挨个挨个找太浪费时间就不找了) 基础点 **字节:**每逢8位是一个字节,这是数据存储的最小单位. 计算机中的数据转换: ​ 1 Byte = 8 ...

  8. Java基础知识点整理(2022年最新版)

    看了网上很多关于Java基础知识点整理的文章,但是感觉都不是很好,要么不全面,要么不准确,要么排版太乱了,所以今天整理了一份Java基础知识点整理(2022年最新版),希望对大家有帮助哈~ 由于本文篇 ...

  9. JAVA基础知识点-入门必备

    本文主要是我之前复习Java基础原理过程中写的Java基础知识点总结.Java的知识点其实非常多,并且有些知识点比较难以理解,有时候我们自以为理解了某些内容,其实可能只是停留在表面上,没有理解其底层实 ...

最新文章

  1. tc写入txt成功却没有内容_挖洞经验 | 构造UserAgent请求头内容实现LFI到RCE提权
  2. pgrouting进行路径规划之入门二
  3. 化工原理第四版课后习题答案
  4. python3.10_概述 — Python 3.10.0a2 文档
  5. 【日常小记】linux中强大且常用命令:find、grep
  6. php mysql int 日期格式化 string,MYSQL int类型字段的时间存放和显示 和 php的时间存放函数...
  7. php mysql练手_ThinkPHP5练手Demo实战
  8. c++ 写x64汇编 5参数_第9篇-C/C++ x86_64的函数栈
  9. Java ConcurrentHashMap
  10. Error: spawn xxxx ENOENT原因与解决
  11. 易语言获取html源码,易语言获取网页源码的方法
  12. python 数字索引转excel列名
  13. Openbravo3.0 客户端代码开发与API
  14. miflash刷机:fastboot模式/保留数据刷机
  15. phython编写图形界面
  16. 收藏--真正爱你的男人
  17. svg 画圆 画椭圆 画直线 画折线
  18. QT遇到“常量中有换行符”的问题
  19. Android手势检测简介
  20. 预约订座APP系统(基于uni-app框架)毕业设计毕业论文开题报告参考(3)系统后台管理功能

热门文章

  1. lm opencv 算法_OpenCV进行图像相似度对比的几种办法
  2. em算法 实例 正态分布_EM算法解GMM
  3. java 幽灵引用_Java 幽灵引用的作用
  4. idea怎么将本地文件和远程git对比_IDEA新建本地项目关联远程git仓库
  5. a byte of python中文版_面试官问 Python 版 “垃圾回收”机制,我没答上来
  6. 【转】修改static控件背景颜色和文字颜色
  7. GPS/轨迹追踪、轨迹回放、围栏控制
  8. ROS 常用命令字典
  9. 1756冗余_AB冗余模块1756-RM
  10. spark 算子例子_Spark性能调优方法