Java SE面试题

Java SE基础

基本语法

数据类型

  1. Java的八种基本数据类型包括

    • 字符型char
    • 布尔型boolean
    • 数值类型

      1. byte

      2. short

      3. int

      4. long

      5. float

      6. double

另外Java中还存在另一种数据类型void,不过我们无法对他进行直接的操作

  1. 大小和表示范围

1Byte = 8bit

名称 字节数 最大存储量 表示范围
byte 8 255 -128到127
short 16 65536 -32768到32767
int 32 2^32-1 2^31到2^31-1
long 64 2^64-1 2^63到2^63-1
float 32 3.4e-45到1.4e38
double 64 4.9e-324到1.8e308
boolean 资料 true\false
char 16 存储Unicode码,用单引号赋值

关键字

Java关键字

  1. 访问控制
权限 private default protected public
当前包当前类
当前包其他类 --
其他包其他类有继承关系 -- --
其他包其他类没有继承关系 -- -- --

关于protected

  1. 子类可以继承,但是不能访问父类的成员变量/方法(一般来说,可以访问就可以继承)。
  2. 有继承关系说明访问对象所在的类是父类。

面向对象

面向对象有以下特征

  1. 封装
  2. 继承
  3. 多态

集合

集合类概述

Collection接口

Collection接口是层次结构中的根接口,通常不能直接使用,该接口提供了添加,删除,管理元素的方法,由于List与Set都继承自该接口,所以他们也可以使用这些方法。

方法 功能描述
add(A a) 将指定对象添加到该集合中
remove(A a) 将指定对象从该集合删除
isEmpty() 返回boolean类型的返回值,判断该集合是否为空
iterator 返回在此Collection的元素上进行迭代的迭代器,用于遍历集合中的对象
size() 返回int类型的值,获取该集合中元素的个数

List

List接口扩展自Collection,他定义了一个允许重复的有序集合,从List接口中的方法来看,List主要是增加了面向位置的操作,允许在指定位置上操作元素,同时增加了一个能双向迭代线性表的新列表迭代器。

  1. ArrayList:
  • 通过查看源码知道,它是用数组存储元素的,这个数组可以动态的创建,如果元素个数超出数组容量,它就会创建一个更大的数组,并将原来的数据赋值到新数组中,
  • 线程同步不安全:ArrayList不提供线程保护,当多个线程读取数据时可能会先后修改数据造成获得的数据是脏数据。
  1. LinkedList:
  • 底层为双向链表
  • 线程不安全
List<Integer> list = new LinkedList<>();// 在创建一个LinkedList对象时一般将其向上转型为List,
// 在定义时,建议加上泛型
list.add(9);
list.add(5);
list.add(2);
list.set(2, 7);// List 独有方法 ,将下标为2的元素修改为7.
System.out.println(list.get(1));
  1. Vector:
  • 底层为数组
  • 效率低,不常用

总结

  • 如果是增加删除比较多的一般使用LinkedList,如果是随机访问次数比较多的使用ArrayList,对线程安全要求比较高的使用Vector
  • 加载方式:ArrayList使用的是懒加载,在第一次插入数据的时候才会创建数组,Vector在使用的时候会直接创建一个数组。
  • 如果List需要存储引用类型,并且使用到 .remove() , contains() 等方法,建议复写该引用类型的.equals() 方法。

Set

set不允许元素重复,本质为没有value的Map

  1. HashSet

    底层为数组,Hash表,实际上就是HashMap,允许为null,乱序存储,不允许重复。

  2. TreeSet

    底层为红黑二叉树,实际上就是TreeMap,

    不允许为null,不能重复,有序存储。

Map

存储键值对,可以通过key找到value,key不可重复,value可以重复。

常用方法
put(k,v)
get(k)
KeySet()
Values()
entrySet()
  1. HashMap
  2. TreeMap
  3. HashTable
  4. ConcurrentHashMap

Java SE基础知识的更多相关文章

  1. Java SE 基础知识(一)

    一.基础知识 1. Java SE : Java Standard Edition Java ME : Java Micro Edition Java EE : Java Enterprise Edi ...

  2. Java SE 基础知识(String,Array)

    String 类: 1. 对于String对象的相等性判断来说,请使用equals()方法,而不是==.String的equals()是判断当前字符串与传进来的字符串的内容是否一致. 2. Strin ...

  3. Java SE 基础知识(二)

    1. 类由两大部分构成:属性和方法.属性一般用名词来表示,方法一般用动词来表示. 2. 如果一个java源文件中定义了多个类,那么这些类中最多只能有一个类是public的,可以都不是public的. ...

  4. Java SE 基础知识

    常量: 常量是一种标识符,它的值在运行期间恒定不变,并且常量在程序中只能被引用,而不能被重新赋值. 常量的命名规则: 1.在 Java 中,在变量声明中加入 final 关键字代表常量,加入 stat ...

  5. 什么才是java的基础知识?

    近日里,很多人邀请我回答各种j2ee开发的初级问题,我无一都强调java初学者要先扎实自己的基础知识,那什么才是java的基础知识?又怎么样才算掌握了java的基础知识呢?这个问题还真值得仔细思考. ...

  6. Java SE 基础:注释

    Java SE 基础:注释 一.注释定义 用于解释说明程序的文字. 二.注释的作用 1.解释说明程序,提高程序的可读性 2.可以帮助我们调试程序:通过注释代码块,检测错误位置 三.格式 1.单行注释 ...

  7. Java SE 基础:标识(zhì)符

    Java SE 基础:标识(zhì)符 一.标识符定义 标识符,就是给类.接口.方法.变量等起名字时的字符序列 二.组成规则与注意事项 1.组成规则 英文大小写字母 数组 $ 和 _ 2.注意事项 不 ...

  8. Java SE 基础:常用关键字

    Java SE 基础:常用关键字 常用关键字表

  9. Java 多线程——基础知识

    java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...

随机推荐

  1. eclipse 导入下载或拷贝的java Web项目时报错 ,或者是报错Unbound classpath container: 'JRE System Library

    在Problems里报错Description Resource Path Location Type Unbound classpath container: 'JRE System Library ...

  2. (私人收藏)古风PPT高级灰蓝传艺

    古风PPT高级灰蓝传艺 https://pan.baidu.com/s/1ADgTfif8i6JqKORLXhTHHgn05p

  3. java面试题——对于多态你是怎么理解的呢?不一样的角度,带你重新看java

    java面试的时候经常会被问到一个问题,那就是java三大特性:继承,封装和多态.那么这三者的含义究竟是什么你真的清楚吗?我看网上大多都是人云亦云.所以我想把我的想法记录下来供大家参考-今天先聊一个, ...

  4. css如何让文字不换行显示?

    在CSS中,可以通过white-space属性来实现文字不换行显示:只要将white-space属性的值为nowrap就可强制文字不换行. white-space属性指定元素内的空白怎样处理.它有以下 ...

  5. flex-direction和flex-wrap

    当外层容器使用flex布局,并且把flex-direction设置成colum的时候,内层容器的宽度会跟外层容器的宽度保持一致. 在浏览器上的效果如下: 当把外层容器的纵向布局不适用flex-dire ...

  6. C#获取页面内容的几种方式

    常见的Web页面获取页面内容用 WebRequest 或者 HttpWebRequest 来操作 Http 请求. 例如,获取百度网站的 html 页面 var request = WebReques ...

  7. C++ 字符串中子串个数

    子串可重叠情况: int fun1(const std::string& str, const std::string& sub){ int num = 0; for (size_t ...

  8. Maven 专题(九):后记

    尚硅谷视频链接:https://www.bilibili.com/video/av84877781/看视频的时候,根据自己的需要,访问量多的不一定是好的,适合自己的才是最好的,总的来说,尚硅谷的视频质 ...

  9. linux管理防火墙

    操作系统环境:CentOS Linux release 7.0.1406(Core) 64位CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙步骤. 1.关闭f ...

  10. [Qt2D绘图]-04绘制文字&&绘制路径

    注:学习自<Qt Creator 快速入门>第三版.   文档中的示例参考 Qt Example推荐:Painter Paths Example和Vector Deformation   ...