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语言 ...
随机推荐
- scrapy 选择器官方文档
当抓取网页时,常见的任务是从HTML源码中提取数据.现有的一些库可以达到这个目的: BeautifulSoup lxml Scrapy 提取数据有自己的一套机制.它们被称作选择器(seletors), ...
- Frame
Frame意为框架,是在屏幕上的一个矩形区域. Frame主要作为其他组件的框架基础,或为其他组件提供间距补充. 何时使用Frame组件呢? Frame组件主要用于在复杂的布局中奖其他组件分组,也用于 ...
- python 3全栈开发-面向对象之绑定方法(classmethod与staticmethod的区别)、多态、封装的特性property
一.面向对象绑定方法 一.类中定义的函数分成两大类 1.绑定方法(绑定给谁,谁来调用就自动将它本身当作第一个参数传入): 1. 绑定到类的方法:用classmethod装饰器装饰的方法. 为类量身定制 ...
- 在一个没有设置宽高的容器中,为什么设置position:absolute后就可以全屏显示了?
此场景适用于移动端百分比布局,背景全屏显示. 在一个没有设置宽高的容器中设置背景,想要背景全屏显示,设置bcakground-size:100%;后还需设置position:absolut; 原因: ...
- [LeetCode] My Calendar II 我的日历之二
Implement a MyCalendarTwo class to store your events. A new event can be added if adding the event w ...
- 重载运算符“ <<” 和“>>” 运算符
:" << " " >> " 的重载作为友元函数重载,有两种方法:1,把变量作为public,就可以不用友元声明:2,先友元声 ...
- [LOJ 6248]「CodePlus 2017 11 月赛」晨跑
Description “无体育,不清华”.“每天锻炼一小时,健康工作五十年,幸福生活一辈子” 在清华,体育运动绝对是同学们生活中不可或缺的一部分.为了响应学校的号召,模范好学生王队长决定坚持晨跑.不 ...
- [SHOI2008]小约翰的游戏John
Description 小约翰经常和他的哥哥玩一个非常有趣的游戏:桌子上有n堆石子,小约翰和他的哥哥轮流取石子,每个人取 的时候,可以随意选择一堆石子,在这堆石子中取走任意多的石子,但不能一粒石子也不 ...
- hihoCoder 1595 : Numbers
Description You are given n constant integers c[1], c[2], ..., c[n] and an integer k. You are to ass ...
- 【BZOJ3531】【SDOI2014】旅行
题目传送门 题目大意:给定一棵无根树,每个节点有自己的类别和权值,现在给定两个类别相同的点,叫你求这2点路径上同类别节点的权值和/最大权值. 节点类别与权值会改变. 解题思路:考虑对每一个类别开一棵线 ...