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. 浅谈MySQL数据库

    目录 什么是数据库 定义 发展现状 数据库基本概念 数据库分类 关系数据库 非关系型数据库(NoSQL) 数据库启动与连接 启动服务端 连接数据库 用户信息查看 数据库的基本操作 表的基本操作 记录的 ...

  2. win中mysql安装

    mysql安装: https://www.mysql.com/>官网 下载 [DOWNLOADS]----[MySQL Community Server]社区版---5.6---No thank ...

  3. HotSpot项目结构

    之前已经介绍了在Ubuntu 16.04上编译OpenJDK8的源代码和调试HotSpot源代码.这一章将介绍HotSpot项目的目录结构. HotSpot目录下主要由agent.make.src和t ...

  4. day04总结

    print("陈少最帅!!!") 输出结果: 陈少最帅!!! 可以变,不可变数据类型#1.可变类型:list,dict#在值改变的情况下,id号不变,也就是说内存地址不变,证明就是 ...

  5. day35 socket套接字介绍

    目录 一.套接字发展史与分类 二.套接字工作流程 三.基于tcp的套接字 一.套接字发展史与分类 套接字起源于 20 世纪 70 年代加利福尼亚大学伯克利分校版本的 Unix,即人们所说的 BSD U ...

  6. mysql修改密码的三种方式

  7. 05 Vue项目搭建

    Vue-CLI 项目搭建 1.环境搭建 安装node 官网下载安装包,傻瓜式安装:https://nodejs.org/zh-cn/ 安装cnpm npm install -g cnpm --regi ...

  8. hacknos靶机实战

    工具: kali 192.168.1.6 nmap 打开使用nmap -sP 192.168.1.0/24 扫描活跃的主机 发现目标ip 使用nmap 查看开启了什么服务Nmap -v -A -PN ...

  9. python数据处理(三)之处理pdf文件

    代码以及资料 https://github.com/jackiekazil/data-wrangling 1.前言 尽可能地寻找可以替代pdf格式的数据 2.解析pdf的编程方法 安装slate pi ...

  10. 数据可视化之powerBI技巧(十七)在Power BI中对数据进行分组

    根据某一个维度的数据,进行分组统计,是很常见的做法,比如按年龄对客户进行分组,按考试成绩进行分组统计等,这篇文章介绍一下,在PowerBI中如何对数据进行分组. 在PowerQuery编辑器中分组 在 ...