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. vue基础入门(2.2)

    2.2.基础指令 2.2.1.什么是指令 指令 (Directives) 是带有 v- 前缀的特殊特性,指令特性的值预期是单个 JavaScript 表达式,指令的职责是,当表达式的值改变时,将其产生 ...

  2. 重学 Java 设计模式:实战备忘录模式「模拟互联网系统上线过程中,配置文件回滚场景」

    作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 实现不了是研发的借口? 实现不了,有时候是功能复杂度较高难以实 ...

  3. vx小程序(1)

    一.程序配置 app.json 1. pages字段——用于描述当前小程序的页面路径. 2.window字段——定义小程序所有页面的顶部背景颜色,文字颜色等. 注意:可以在pages/logs目录下的 ...

  4. 洛谷 P4042 [AHOI2014/JSOI2014]骑士游戏

    题意 有\(n\)个怪物,可以消耗\(k\)的代价消灭一个怪物或者消耗\(s\)的代价将它变成另外一个或多个新的怪物,求消灭怪物$的最小代价 思路 \(DP\)+最短路 这几天做的第一道自己能\(yy ...

  5. 02 . SaltStack高级用法(Python API)

    Python API简单使用 第一条命令 /usr/bin/salt默认使用的接口是LocalClient,该接口只能在salt master上使用 >>> import salt. ...

  6. vue+elementUI 图片上传问题

    图片上传问题,获取后台的图片,并点击可以更换图片,并把图片存储到数据库中: (1)在编辑页面上,action指的图片上传的地址,header指请求头: (2)因为element-ui有自己上传的接口, ...

  7. PE文件格式详解(五)

    0x00 前言 前一篇了解了区块虚拟地址和文件地址转换的相关知识,这一篇该把我们所学拿出来用用了.这篇我们将了解更为重要的一个知识点——输入表和输出表的知识. 0x01 输入表 首先我们有疑问.这个输 ...

  8. Django---进阶9

    目录 自定义分页器的拷贝及使用 Forms组件 前戏 基本使用 校验数据 渲染标签 展示提示信息 钩子函数(HOOK) forms组件其他参数及补充知识点 作业 自定义分页器的拷贝及使用 " ...

  9. python基础内容扩展复习

    目录 一.关于编辑器 二.解释型和编译型 三.数据类型 1 一切皆对象 2 深浅拷贝 3 可变类型和不可变类型 四.闭包函数 一.关于编辑器 python开发:pycharm(收费),vscode(免 ...

  10. 普通平衡树学习笔记之Splay算法

    前言 今天不容易有一天的自由学习时间,当然要用来"学习".在此记录一下今天学到的最基础的平衡树. 定义 平衡树是二叉搜索树和堆合并构成的数据结构,它是一 棵空树或它的左右两个子树的 ...