1.Java语言的特性
封装,继承,多态,(抽象)。
2.JDK,JRE,JVM的区别
JDK: Java Development Kit 的简称,Java的开发工具包,提供了Java的开发环境和运行环境。
JRE: Java Runtime Environment 的简称,Java的运行环境,为Java运行提供了所需要的环境(JVM和核心类库)。
JVM: Java Virtual Machine的简称,Java虚拟机,Java跨平台最核心的部分。屏蔽了跨平台导致的底层操作系统的差异性。
具体的来说JDK其实包含了JRE,同时还包含了编译Java源码的编译器Javac,还包含了不少Java程序和一些调试和分析工具。
简单说:如果单纯运行Java程序安装JRE就可以了,如果想要编写Java程序那么需要安装JDK。
JVM在处理class文件时,会依赖JRE下lib文件夹下的类库的支持。
3.Java的基本数据类型以及其封装类
| 基本数据类型 | 大小(字节) | 默认值 | 封装类 |
| byte | 1 | (byte)0 | Byte |
| short | 2 | (short)0 | Short |
| int | 4 | 0 | Integer |
| long | 8 | 0L | Long |
| float | 4 | 0.0f | Float |
| double | 8 | 0.0d | Double |
| boolean | - | false | Boolean |
| char | 2 | null | Character |
基本类型与封装类型的区别
①基本类型按值传递,封装类按引用传递
②基本类型存储在栈中,而对象都是在堆中进行创建和储存的。而基本类型在栈中处理效率会比较高(不涉及到对象的创建和回收),但是可能会存在内存泄漏的问题。封装类的目的主要是更好的处理数据之间的转换,方法很多,用起来也方便。
4.如果“main”方法被声明为“private”会怎样?
可以被正常的编译,但是运行的时候会提示“main方法不是public的”,如果在编辑器中比如idea 工具会将去掉可运行按钮。
5.请说明一下"public static void main(String args[])"这段声明中每个关键字的含义
public:main方法是Java程序运行的入口,第一个被调用,因此其在Java的环境中必须是公开的。
static:表示该方法是静态的,不需要进行实例化即可使用。
void:表示main方法没有返回值。
String:命令行传进参数的数据类型。
args[]:命令行传递进的字符串数组。
6.“==”与“equals”的区别
“==”比较的是两个对象在内存中是不是同一个对象,也就是说在内存中存放的位置是不是一致,也就是所谓“地址”是否一致。
例: 比如两个String对象存储的值是一样的,但是其在内存中存储的位置是在不同的地方。
“==”比较引用而“equals”比较的是内容,equals方法是由其根父类Object对象提供的,子类可以对该方法进行重写。
7.Object有哪些公用的方法?
Object类是所有类的父类,任何类都默认继承Object。
clone 保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则将会抛出CloneNotSupportedException异常。
equals 在Object中跟“==”是一样的,在其子类在使用的时候建议进行重写。
hashCode 该方法用于哈希查找,重写后的equals方法一般都要重写hashCode方法,这个方法在一些具有哈希功能的Collection中用到。
getClass final方法,获取运行时的类型。
wait 使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。wait()方法是一直等待,直到获取锁或被中断。wait(long timeout)设定一个超时时间间隔,如果在规定的时间没有获得锁就返回。调用该方法后,当前线程则进如休眠状态,直到以下事件发生:
①其他线程调用了该对象的notify方法。
②其他线程调用了该对象的notifyAll方法。
③其他线程调用了interrupt中断该线程。
④时间间隔到了。
notify是唤醒该对象上等待的某个线程。
notifyAll是唤醒该对象上的等待的所有线程。
toString 转换成字符串,一般子类都会重写。
8.为什么Java中没有全局变量?
全局变量是全局可见的,Java不支持全局可见变量,因为全局变量破坏了引用透明性原则。全局变量导致了命名空间的冲突。
9.while循环和do循环有什么区别?
while结构在一开始就判断是否要进入循环结构体,do/while结构在循环的结尾判断是否进步下一次迭代,do结构至少会执行一次循环体。
10.char型变量中能不能存进一个汉字?为什么?
可以的。Java默认的是Unicode编码,Unicode码占16位。char两个字节正好是16位。