当前位置: 代码迷 >> 综合 >> Java基础篇(一)
  详细解决方案

Java基础篇(一)

热度:90   发布时间:2024-01-31 01:54:13.0

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位。