JAVA之美-by ZHJ

JAVA之美——javaSE知识点总结

1.你觉得java美么?为什么?

 

2.什么是java

 

3.java具有哪些特性?

Java具有简单性,面向对象,分布式,多线程,动态性,体系结构中立和可移植性,健壮性,安全性。

(1)简单性:java语法简洁,方便使用;

(2)面向对象:java采用了面向对象技术,其核心是对数据进行封装和对程序代码的模块化组织,更大程度上支持代码复用;

(3)分布式:使用JDKAPIjava程序可以更便捷的实现网络通信,实现程序间的协作,利用远程方法调用可以实现网络环境中的分布式运作。

(4)多线程:java程序的运行采用多线程技术,提高了运行效率。多线程就是指在一个应用程序内部再分成多个子任务,这些子任务作为多个顺序控制流并发运行。

(5)动态性:java的类只有在用到时才会被载入,即java运行时系统采用的是动态链接的方式

(6)体系结构中立和可移植性:java的设计理念就是“一次编写,到处运行”,就是同一份java程序可以不做任何修改就能运行在不同硬件平台和各种操作系统中。为保证java的可移植性,java语言的所有数据类型都是定长的。

(7)健壮性:为了开发出可靠的软件,java提供了广泛的编译时检查和运行时检查机制,java程序中的大多数问题都可以由编译器和运行时环境快速发现。保证了其健壮性。

(8)安全性:java应用程序在运行时,对数据的访问处理权限有严格的控制,保证了其安全性。

 

4.什么是面向对象,说说你是怎么理解封装,继承和多态的

1封装:

指的是将对象的实现细节隐藏起来,然后通过一些公用方法暴露该对象的功能;

因为每个类都有自己属性,为了不让外部的类随意改变自己属性的值,就将其属性私有化,但是这造成了不能初始化的问题,就在类里面写构造方法,而属性可以通过调用getset方法来使用。

2继承:

是面向对象实现软件复用的重要手段,当子类继承父类后,子类作为一种特殊的父类,将直接获得父类的属性和方法;

3多态:

针对一消息,不同的对象可以以适合自身的方式加以响应

指的是子类对象可以直接赋给父类变量,但运行时依然表现出子类的行为特征,这意味着同一个类型的对象在运行时可能表现出不同的行为特征

 

4.static关键字有什么特点?如何使用

static修饰的方法叫着成员方法,被static修饰的变量叫着成员变量

使用static关键字修饰的方法和变量都可以直接通过类名.调用

 

5.方法的重载和方法的重写的异同:

Overload重载:在一个类当中,方法名相同,参数列表不能

Override重写:发生在子类继承父类当中,方法名,参数列表,返回值类型都必须相同,子类的访问修饰符必须要大于等于父类的访问修饰符,子类抛出的异常必须要小于等于父类抛出的异常

 

6.abstract关键字怎么用?

abstract用来修饰类,表示该类是抽象类,不能被实例化

abstract用来修饰方法,表示该方法是抽象方法,该方法不能有方法体,而且拥有该方法的类必须是抽象类

 

7.什么是静态内容,什么是非静态内容?

1)所有的静态的内容都会在非静态内容执行之前执行。包括子类的静态内容都会在父类的非静态内容执行之前执行。  

静态内容之间的顺序根据编写顺序。

所有静态内容只执行一次。类加载时执行。

2)非静态内容:所有类的非静态变量和非静态块的执行顺序也按编写顺序执行。

父类非静态块/非静态变量赋值-》父类构造方法-》子类非静态块/非静态变量赋值-》子类构造方法。

非静态内容在每次创建对象时都执行

 

8.抽象类和接口有什么异同?

1.两者都不能被实例化(new),都包含抽象方法,但是接口中如果有方法必须是抽象方法,而抽象类中可以有抽象方法和普通方法

2.接口主要描述类有什么功能,是一组对类的需求表述;

抽象类主要是讲这个是什么东西,本质上还是一个类。

3)一个接口继承多个接口,同一个类可以是吸纳多个接口,而抽象类毕竟是一个类,

只能继承一个类,如果这个类继承了一个类,它就不能再继承其他的类

4)接口只能包含抽象方法,

5)接口继承抽象类和实现接口都必须要实现其抽象方法,除非此类是抽象类。

 

9.== equals的区别?

== 在值类型中比较的是大小,在引用类型中比较的是地址

equals只能用在引用类型中,比较是的内容。

 

10.String string1 = null String string2 = ""的区别?

String string 1= null; 没有指向堆中任何地址,没有分配内存

String string2 = ""; 在堆中创建了一个空间,中间存放了一个空字符串

 

11.String String Buffer的区别?

String是不可变字符序列,每次改变都是在创建一个新的字符串

String Buffer是线程安全的可变字符序列,一个类似于 String的字符串缓冲区。

 

12.String BufferString Builder的区别?

String Buffer线程安全的可变字符序列,用于弥补String类追加、插入的时候效率低,所以主要的功能就是追加(append)、插入(insert

String Builder是线程不安全的String Buffer,String Builder的速度比String Buffer

 

13.值传递和引用传递的区别?

 

14.什么是装箱,什么是拆箱?

Boxing:装箱就是指值类型转换为引用类型

UnBoxing:拆箱就是指引用类型转换为值类型

 

15.ArrayListLinkedListVector有什么区别?

    1ArrayList底层是数组,增删慢,查找快。

线程不安全,效率高

    2LinkedList底层是链表,增删快,查找慢。

线程不安全,效率高

    3Vector底层是数组,增删慢,查找快。

线程安全的,效率低

 

16.ListSetMap什么区别?

List有序的,可以重复的

Set无序的,不能重复的

Map是由键值对组成

 

17.CollectionCollections什么区别?

    Collection是单列集合的顶层接口

    Collections是操作集合的工具类,有对集合的查找、排序、洗牌等功能。

 

18.异常分为哪几种?有什么区别?

checked异常:编译时就报错

unchecked异常:编译时没有问题,运行时报错,是自己代码的问题

 

19.finalfinallizefinally什么区别?

final是个修饰词,用来修饰类,表示该类不能有子类,用来修饰方法,表示该方法不能被重写,用来修饰变量,表示该变量变为常量

finallizeObject类里面的方法,表示垃圾回收

finally表示在异常抛出后,用来释放资源

 

20.throwsthrow什么区别?

    throws:.

用在方法后面,跟的异常的类名

可以有多个异常类名

  表示可能有后面异常抛出,但是不一定会发生

    throw

用在方法体里面,跟的是异常对象

只能抛出一个具体的异常对象

表示抛出一个具体的异常了。只要执行到这里,一定会有异常抛出。

 

21.HashMapTreeMapHashtable什么区别?

HashMap无序的,不能重复的,如果是自定义的类,需要重写Hashcodeequals方法,HashMap的键可以存储null,线程不安全的

TreeMap有序的,不能重复的,如果自定义的类,需要实现compable接口或者重写compare方法

Hashtable的键不可以存储null,线程安全的

 

22.HashMapHashtable什么区别?

    HashMap的键可以存储null,线程不安全的

Hashtable的键不可以存储null,线程安全的

 

23.什么是进程?什么是线程?

进程:正在运行中的程序就叫着进程

线程:一个进程中有多个线程,一个进程中有多个任务可以同时进行。

 

24.run方法和start方法有什么区别?

start()方法启动一个线程,调用该Runnablerun()方法,不能多次启动一个线程

run()方法:是本线程中被调用Runnable里面的run()方法,可以重复多次调用

 

25.请简述下线程的生命周期。*****

线程状态:新建、就绪、运行、阻塞、终止

新建(没有执行资格,没有执行权)

通过调用start()方法,就绪(有执行资格,没有执行权)

抢到CPU,运行(有执行资格,有执行权)

通过调用sleep()wait()方法,阻塞(没有执行资格,没有执行权)

通过调用notaify()方法,重新进入就绪状态

通过调用stop()interrupt()方法,终止(没有执行资格,没有执行权)

 

26.(设计模式)懒汉模式,饿汉模式有什么区别:

饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变

        懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的

 

27. JDK 1.5新特性

1.泛型(Generics

2.增强的“for”循环(Enhanced For loop

3.自动装箱/自动拆箱(Autoboxing/unboxing

4.类型安全的枚举(Type safe enums

5.静态导入(Static import

6.可变参数(Var args)

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值