java习题

java习题练习

1.char 在java中占多少个字节?

答:两个字节

2.每种基本类型都有它的包装类,一般是通过大写字母的方式。
不过int特殊一点,他是	Integer;char的是Character。

3.构造方法是什么?

答:构造方法的作用就是“为对象的初始化赋值”
分为有参和无参构造。

4.constructer 为什么不能进行override

因为构造器不能被继承,所以就不能重写,重写是发生在父类和子类之间的
,constructer可以被重载。

5.重载和重写?

重载就是方法名相同,但是参数不同的,返回值不同,修饰符不同。
重写发生在子类对父类的访问过程中,子类的返回值不能大于父类,
他的错误类型也不能大于父类。它的范围访问的范围不能小于父类。
也就是说如果父类的修饰符是private,那么就是无法进行重写。

6.封装,继承,多态

封装:把对象的属性私有化
继承:子类继承父类的所有方法和属性,但是对于父类的私有的方法和属性,子类是无法访问的。

多态:java实现多态的方法有两种:
继承(多个在子类对于一个父类进行重写)和接口(实现接口并覆盖方法)

7.string stringbuffer 和stringbuilder
string 在定义的时候被final 修饰了。  
stringbuffer对于方法加了同步锁,是线程安全的;  多线程
stringbuilder 没有加同步锁  单线程

8.静态方法
静态方法不需要使用对象就可以调用

9.接口和抽象类的区别:

接口是对行为的抽象,抽象是对类的抽象
接口的修饰符默认是public,但是抽象可以是defaultprotectedpublic。
一个类可以实现多个接口但是只能实现一个抽象类。

10.成员变量和局部变量的区别?

成员变量是属于类的,局部变量是方法中的变量或者参数。
成员变量会随着对象的消失而消失,而局部变量会随着方法的调用而主动的消失。
成员变量存在于堆内存中,而局部变量是存在于栈内存中。
成员变量没有被赋值的话,则会被自动赋值;但是局部变量不会被自动赋值。


11. 创建对象?
  new 一个对象实例出来,对象实例存储在堆内存中;对象引用指向对象实例。对象引用存储栈内存中。
 
 12.类的构造方法的作用?
 主要是完成对类的初始化的工作,如果没有声明构造方法,也可以执行,因为会有默认的不带参数的构造方法。
13.构造方法的特征?
方法名和类的名字一样;
没有返回值
生成类的对象自动执行
14.静态方法和实例方法
静态方法不需要创建对象。
15.对象的相同和与指向他们的引用相同的区别?
对象相同指得是内存中存放的内容;
引用相同是指地址是否相同
16.==equals()
==比较的是
1.对于引用数据类型   比较内存的地址
2.基本数据   比较的是值
 equals() 这个可以进行复写,复写后可以比较值
 string里的equals()就是复写了的
17,重要!!
hashcode和equals()
为什么写equalsz()之前要重写hashcode?
hashcode是用来生成哈希码的,这个哈希码的作用是确定对象在哈希表的索引的位置。java中的任何类都包含hashcode()函数,hashcode的默认的是对堆上的对象生成独特值。如果重写equals方法不重写hashcode方法,那么一个类的两个对象无法相等。
18.为什么java中只有值传递?
参数传递时,是拷贝实参的副本,然后传递给形参。(值传递)
因为对象是在堆中,而对象的引用是在栈中;
传参数的时候,是在栈中,拷贝实参,然后传递给形参。
19.线程进程和程序的概念和联系?
进程是**程序的一次执行**过程,是系统运行程序的基本单位。进程是的动态的。系统运行一个程序就是进程的创建,运行到消亡的过程。进程会占用系统的资源,cpu,内存空间等。线程是是比进程跟小的执行单位,一个进程可以产生多个线程,同类的多个线程可以共享一片内存空间。程序是数据和占领的文件。

20.java线程有多少种状态?
6种:
分别是初始状态:
运行状态,阻塞状态,等待状态,超时等待状态和终止状态。

21.java中的异常处理。
异常能被程序本生处理,但是错误不可以。
throwable类中分为两大子类,expection和error,eception中有io和runtime异常。

22.java序列化中如果有些字段不想进行序列化,怎么办?
使用transient关键词修饰,只能修饰变量。

23.java中的io流分为几种?
按操作单元:字节流,字符流
输入输出流
流的角色为:节点流和处理流
所有的流都是基于输入输出的,
inputStream/reader 字节、字符的读取。
24.为什么有了字节流还要有字符流呢?
因为字符流是由java的虚拟机转化的,在这个转化的过程中耗时严重,并且不知道的话,容易出现乱码的情况。因此io流直接提供了字符流操作。
25.对于nio和bio和aio的理解
bio 同步阻塞io模型,数据的读取和写入必须在一个线程完成,适合连接量小的。
nio是同步的非阻塞模型(套接字通道),适合高并发和高负载的
aio是异步的非阻塞。基于事件和回调机制。应用操作后会直接返回,不会阻塞在那,后台处理完成,操作系统会通知相关的线程完成后续的操作。

26.四大关键字总结:
final,staticthis和super
final可以修饰类,变量和方法;
被修饰之后就不能被修改和继承
static一般用于静态的代码块,静态的代码快只会执行一次。
 this关键字用于引用类的当前实例
 super用于子类调用父类。

**27.对于collection和map类的话还有仔细的去研究一下。
这里先放一下**
28.java语言怎么和其他的语言进行交互呢?
native 用来修饰方法,用 native 声明的方法表示告知 JVM 调用,该方法在外部定义,我们可以用任何语言去实现它。 简单地讲,一个native Method就是一个 Java 调用非 Java 代码的接口。
29.浅拷贝和深拷贝
浅拷贝:创建一个新对象,然后将当前对象的非静态字段复制到该新对象,如果字段是值类型的,那么对该字段执行复制;如果该字段是引用类型的话,则复制引用但不复制引用的对象。因此,原始对象及其副本引用同一个对象。
深拷贝:创建一个新的对象,不管当前的对象是值类型还是引用类型都会拷贝一份,也就是说,原来堆里的对象会被复制一份。但是浅拷贝不会。
30.区分arraylist和linkedlist
都是线程不安全的;底层的数据结构不一样。

 instanceof 严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例。
31.vector和arraylist
vector是同步的,可以多个线程访问

32.arrayList的扩容机制
可以看到如果修改后的数组容量大于当前的数组长度那么就需要调用grow进行扩容,反之则不需要。

































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值