JavaSE基础问答
1.JAVA的基本数据类型有哪些?
JAVA的基本数据类型分为4类8种,就是整形 byte、short、int、long。浮点型 float 跟double,字符型 char,跟布尔型 true和 false。
追问:那 int 占几个字节?
整形从低到高分别占1,2,4,8个字节,int 的话就是占4个字节。一个字节8位,就是占32位嘛。然后最大值就是2的32次方,是21亿多。
2.说说 String 和 StringBuffer的区别。
String和StringBuffer都能对字符串进行操作,最主要区别就是String类的对象是不可变的,而StringBuffer类的对象是可变的。如果一个字符串改变的话就用StringBuffer,不然用String的话会生成很多新的String对象,浪费内存。
追问:那StringBuffer 和 StringBuilder的区别呢?
这两个类的对象都可以改变。区别是在执行速度方面,StringBuilder 大于StringBuffer,但是在线程安全方面,StringBuilder是线程非安全的,StringBuffer是线程安全的。在多线程时,JVM可以保证StringBuffer可以正确操作。但是大多数时候我们都是用的单线程,所以大多数都是选择用速度较快的StringBuilder。
也就是说少量数据就用String,因为比较方便。 单线程下操作大量数据用StringBuilder,因为速度较快。 多线程下操作大量数据用StringBuffer,因为能搞保证正确性。
3.面向对象的特征有哪些?
面向对象主要指的是 封装、多态、继承。
封装就是把对象的属性和行为封装在一个模块中,代码上就是封装在一个类中,然后对象的属性用变量定义,行为用方法定义,将属性的访问类型设为私有private的,然后提供一个共有的 get 和 set 方法,然后只有本类的对象才能够对属性进行赋值。封装可以提高代码的安全性。
多态,就是多种状态。 主要的形式就是左边是父类变量,然后右边实例化一个子类,就是new 一个子类。 然后这个父类变量就有了子类的方法。
继承,是java中类与类之间的一种关联方式。通过extends关键字就可以实现一个类继承另一个类,比如A extends B,就是A继承B,A称为子类,B称为父类。子类可以对父类的属性和方法进行调用或重新定义。并且可以新增其他的属性或方法。这样可以提供软件的可重用性和可扩展性。
4.常用的集合类有哪些?
常用的集合主要是三个,List、Set 和Map。List 的子类又主要是用 ArrayList 和LinkedList,Set 的子类是 hashSet 和 TreeSet,Map 的子类是HashMap 和 HashTable。主要区别是 List 集合能重复,Set 集合不能重复,重复的话会自动覆盖,Map集合的键不能重复,键重复的话值就被覆盖。 对于List 的子类 和ArrayList 和LinkedList,ArrayList 是查询数据快而插入数据慢,LinkedList是查询数据慢而插入数据快。 Set的子类HashSet 用得比较多,TreeSet 的话可以对对象进行排序,但是要实现一个Comparable 接口和 重写里面的 compareTo方法,麻烦一点。 至于HashTable和HashMap的话,就是HashTable是线程安全的,HashMap是线程不安全的,但是HashMap速度比较快。一般单线程下都是用的HashMap。 理解线程安全和速度的关系有点像生活中的‘载客摩托车’ 和 ‘公车’, 有时候赶时间去地铁站,公车的话虽然安全,但是速度有点慢,要多时间,这时候我就选择‘载客摩托车’,因为他好像红灯绿灯都能走,很快,但是不安全。 就是线程安全与执行速度要视情况而定。单线程就是路上车少的时候摩托车挺快也挺安全的,但是多线程就是多车的时候,选择公交就行,虽然慢一点,还是安全重要。
5.抽象类和接口的区别。
首先,抽象类和接口都不完整,就是都不能被实例化,他们只有被子类继续或者实现才有意义。
区别是:
抽象类可以有构造方法,接口没有构造方法。抽象类除了能有抽象方法外,其他的跟普通的类一样。
抽象类中有普通变量和静态变量,接口中只有public static final 修饰的常量。
抽象类中可以有普通方法,抽象方法有没有都行,接口中没有普通方法,只有抽象方法。
抽象类中的抽象方法的访问类型修饰符可以是public 或 protected 的,接口中的抽象方法只能是默认的public abstract ,而且接口中public abstract 还可以省略。
抽象类只能单继承,接口可以多继承。
6.final, finally,finalize的区别。
final可以用来修饰类,表示这个类不能被继承。final可以用来修饰变量(不管是类的成员变量还是方法中的局部变量),表示该变量的值不能再改变(即常量)。final还可以用来修饰方法,表示这个方法不能被子类重写。(static可以修饰类中的成员变量,表示类变量。但不能修饰方法中定义的变量。)
finally是异常处理语句结构的一部分,放在try-catch的后面,表示总是执行。里面一般放的是关闭文件、关闭流、关闭系统之类的代码。
finalize是Object类的一个方法。是GC垃圾回收运行机制中的一部分。在垃圾回收的时候会调用被回收对象的这个finalize()方法。可以重写这个方法使垃圾回收时也回收其他资源,例如关闭文件等。这样就能更有效地利用好有限的资源,节省空间。还有就是因为垃圾回收是不定时的,所以JVM不保证这个finalize方法总被调用。
7.如何实现多线程。
线程的实现由两种方式,第一种是继承Thread类,然后重写run方法;第二种是实现runnable接口,然后实现其runnable接口。
追问:怎么启动?
调用线程对象的 start()方法
怎么停止?
1.正常情况下等run方法跑完就停止了,如果run方法里面有while循环的话,一般是通过一个布尔型条件(flag)来控制。
2.用stop()方法来停止。但是这样很危险。可能会产生不可预料的后果。
3.用interrupt 方法来停止。
JSP:
8.请求的GET与POST方式的区别。
9.转发和重定向的区别。
10.说一下JSP的内置对象。
11.说一说Servlet的生命周期
JavaSE基础问答的更多相关文章
- javaSE基础07
javaSE基础07 一.static静态修饰符 用了static修饰的变量就会变成共享的属性,只会初始化一次,在内存中只存在一个,并且每个对象都可以访问,存放在方法区(数据共享区) 1.1 stat ...
- javaSE基础06
javaSE基础06 一.匿名对象 没有名字的对象,叫做匿名对象. 1.2匿名对象的使用注意点: 1.我们一般不会用匿名对象给属性赋值的,无法获取属性值(现阶段只能设置和拿到一个属性值.只能调用一次方 ...
- javaSE基础05
javaSE基础05:面向对象 一.数组 数组的内存管理 : 一块连续的空间来存储元素. Int [ ] arr = new int[ ]; 创建一个int类型的数组,arr只是一个变量,只是数组的一 ...
- javaSE基础04
javaSE基础04 一.三木运算符 <表达式1> ? <表达式2> : <表达式3> "?"运算符的含义是: 先求表达式1的值, 如果为真, ...
- javaSE基础03
javaSE基础03 生活中常见的进制:十进制(0-9).星期(七进制(0-6)).时间(十二进制(0-11)).二十四进制(0-23) 进制之间的转换: 十进制转为二进制: 将十进制除以2,直到商为 ...
- javaSE基础02
javaSE基础02 一.javac命令和java命令做什么事情? javac:负责编译,当执行javac时,会启动java的编译程序,对指定扩展名的.java文件进行编译,生成了jvm可以识别的字节 ...
- JavaSE基础01
JavaSE基础篇01 ------从今天开始,我就学习正式java了,O(∩_∩)O哈哈~,请大家多指教哦 一.Windows常见的dos命令 操作dos命令: win7 --->开始 --- ...
- javase基础复习攻略《十》
按照计划本篇为大家总结JAVA的网络编程,什么叫网络编程呢?网络编程!=网站编程,对于这一点大家一定要注意,很多小朋友都曾经这么认为.既然谈到网络编程,咱们先了解一下网络的基础知识,什么是计算机网络? ...
- javase基础复习攻略《二》
今天就开始的真正走进JAVASE的世界,本篇介绍的是:JAVASE基础语法,大家如果有C语言的基础,对于本节内容一定感觉非常轻松,编程语言之间的都是相通的,只不过C语言属于面向过程编程,而JAVA语言 ...
随机推荐
- 有没有想过css定位与xpath的区别
我是这样理解的, css选择如同你尽可能具体的描述一个元素的形态, 包括他的: 标签, 类, id 以及这些的组合, 目标是尽可能确定元素的唯一坐标 , 以方便选择. 而xpath是根据元素的路径去确 ...
- *Boosting*笔记
集成算法之boosting 集成方法 1. Parallel methods: 1. bagging 2. Random Forest 2. Sequence methods: 1. ...
- ABP跨域调用API时出现的问题
public override void Initialize() { IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAss ...
- MySQL集合操作类型
SQL语言包含3个集合操作符(union.intersect.expect)以执行各种集合操作. 此外,每个集合操作符可以有两种修饰符:一个表是包含重复项,另一个表是去除重复项(但不一定时所有的重复项 ...
- web攻击和防御措施
1.SQL注入:参照下面的链接 http://www.cnblogs.com/chenhaoyu/p/8758888.html 2.跨网站脚本攻击(Cross Site Scripting, XSS) ...
- Docker And Swarm Mode(一)
(一)节点的创建和配置 前言 虽然工作中一直在用Docker和Docker Swarm,但是总感觉有点陌生,总想自己亲手来写写和配置Docker 容器相关的事情,这篇文章主要是参考了Los Tech ...
- [Vijos 1143]三取方格数
Description 设有N*N的方格图,我们将其中的某些方格填入正整数, 而其他的方格中放入0. 某人从图得左上角出发,可以向下走,也可以向右走,直到到达右下角. 在走过的路上,他取走了方格中的数 ...
- hihocoder 1388 fft循环矩阵
#1388 : Periodic Signal 时间限制:5000ms 单点时限:5000ms 内存限制:256MB 描述 Profess X is an expert in signal proce ...
- POJ 1486二分图的必要边
题意:有n个大小不等透明的幻灯片(只有轮廓和上面的数字可见)A.B.C.D.E…按顺序叠放在一起,现在知道每个幻灯片大小,由于幻灯片是透明的,所以能看到幻灯片上的数字(给出了每个数字的坐标,但不知道这 ...
- USACO 2017 US Open
只会做T1,FallDream T2 n^2暴力AC,太强啦. T1.Modern Art 题目大意:有一个n*n的矩阵,一开始都是0,你有n^2种颜色,编号1到n^2,每次可以选出一种颜色涂满一个子 ...