JavaSE的一些基础内容

a) 九种基本数据类型的大小,以及他们的封装类

boolean    取值只有true 和 false,大小为1bit(1字节byte = 8bit)        封装类为Boolean
char         char在Java中是2byte(16bit),因为Java用的是Unicode          封装类为Character
byte         byte大小为8bit                                  封装类Byte
short        short大小为16bit                                        封装类Short
int            int 大小为32bit                                   封装类Integer
long          long 大小为 64bit                                            封装类Long
float         float 大小为 32bit                                封装类Float
double      double 大小为 64bit                                                          封装类Double
void         Void 类是一个不可实例化的占位符类               封装类Void

b) Switch能否用string做参数,equals与==的区别

  开发过程中,java中的switch功能不支持字符串作为条件。使用枚举可以解决这个问题。

import java.util.Scanner;
public class switchUseString {
	@SuppressWarnings("resource")
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String day = sc.nextLine();
		switch (Day.toDay(day.toUpperCase())) {
		case SUNDAY:
			System.out.println("星期天");
			break;
		case MONDAY:
			System.out.println("星期一");
			break;
		case TUESDAY:
			System.out.println("星期二");
			break;
		case WEDNESDAY:
			System.out.println("星期三");
			break;
		case THURSDAY:
			System.out.println("星期四");
			break;
		case FRIDAY:
			System.out.println("星期五");
			break;
		case SATURDAY:
			System.out.println("星期六");
		default:
			break;
		}
	}
	public enum Day{
		SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY;
		public static Day toDay(String str){
			return valueOf(str);
		}
	}
}

  基本数据类型的比较,应用双等号(==),比较的是他们的值。

  引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。

  复合数据类型(类)用(==)表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。

  复合数据类型之间进行equals比较,表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。

第三个例子,两个对象均不是new出来的,它们其实指向的是同一个地址

c) Object有哪些公用方法,一些特性,Hashcode的作用

  boolean equals(Object obj) //指示其他某个对象是否与此对象“相等”。

  Class<?> getClass()  //返回此 Object 的运行时类。

  int hashCode()   //返回该对象的哈希码值。非常重要的一个函数,和equals()方法一样重要,建议去看源码。

  void notify()  //唤醒在此对象监视器上等待的单个线程。

  void notifyAll() //唤醒在此对象监视器上等待的所有线程。

  String toString() //返回该对象的字符串表示。

  void wait() //在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。

  void wait(long timeout) // 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待。

  void wait(long timeout, int nanos)//在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超    过某个实际时间量前,导致当前线程等待。

  equals() :默认情况(没有覆盖equals方法)下equals方法都是调用Object类的equals方法,而Object的equals方法主要用于判断对象的内存地址引用是不是同一个地址                        (是不是同一个对象)

                  要是类中覆盖了equals方法,那么就要根据具体的代码来确定equals方法的作用了,覆盖后一般都是通过对象的内容是否相等来判断对象是否相等。。equals方法                      用于比较对象的内容是否相等(覆盖以后)

  HashCode:hashcode方法一般只有在集合中用到。当覆盖了equals方法时,比较对象是否相等将通过覆盖后的equals方法进行比较(判断对象的内容是否相等)。

将对象放入到集合中时,首先判断要放入对象的hashcode值与集合中的任意元素的hashcode值是否相等,如果不相等直接将该对象放入集合中。如果                                     hashcode值相等,就再通过equals方法判断要放入对象与集合中的任意对象是否相等,如果equals判断不相等,直接将该元素放入到集合中,否则不放入。

d) Java的四种引用,应用场景

  从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。

强引用:是使用最普遍的引用。如果一个对象具有强引用,那就类似于必不可少的生活用品,垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足问题。

软引用:如果一个对象只具有软引用,那就类似于可有可物的生活用品。如果内存空间足够,垃圾回收器就不会回收它,如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存。软引用可以和一个引用队列(ReferenceQueue)联合使用,如果软引用所引用的对象被垃圾回收,Java虚拟机就会把这个软引用加入到与之关联的引用队列中。

弱引用:如果一个对象只具有弱引用,那就类似于可有可物的生活用品。 弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它 所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。不过,由于垃圾回收器是一个优先级很低的线程, 因此不一定会很快发现那些只具有弱引用的对象。弱引用可以和一个引用队列(ReferenceQueue)联合使用,如果弱引用所引用的对象被垃圾回收,Java虚拟机就会把这个弱引用加入到与之关联的引用队列中。

虚引用:"虚引用"顾名思义,就是形同虚设,与其他几种引用都不同,虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收。虚引用主要用来跟踪对象被垃圾回收的活动。虚引用与软引用和弱引用的一个区别在于:虚引用必须和引用队列(ReferenceQueue)联合使用。当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象的内存之前,把这个虚引用加入到与之关联的引用队列中。程序可以通过判断引用队列中是 否已经加入了虚引用,来了解被引用的对象是否将要被垃圾回收。程序如果发现某个虚引用已经被加入到引用队列,那么就可以在所引用的对象的内存被回收之前采取必要的行动。

e) ArrayList、LinkedList、Vector的区别,各自的应用场景

f) String、StringBuffer与StringBuilder的区别

g) Map、Set、List、Queue、Stack的特点与用法

h) HashMap和HashTable的区别,各种的用法

i) HashMap和ConcurrentHashMap的区别,HashMap的底层源码

j)  TreeMap、HashMap、LindedHashMap的区别,应用场景

k)  ConcurrentHashMap 和HashTable的区别

l) Collection包结构,与Collections的区别

m) Excption与Error包结构。OOM、SOF中各自遇到过哪些情况

n) Override和Overload的含义去区别

o) Interface与abstract类的区别

p) Static class 与non static class的区别

q) Java中锁的等级:方法锁、对象锁、类锁

r)  Concurrent包了解

s) wait()和sleep()的区别,foreach与正常for循环效率对比

t) Java IO与NIO

u) 反射的作用于原理

v) 泛型常用特点,List<String>能否转为List<Object>

w) 解析XML的几种方式的原理与特点:DOM、SAX、PULL

x) Java与C++对比, Java1.7与1.8新特性

y) JNI的使用

z) 面向对象、泛型相关知识

时间: 2024-11-03 01:30:20

JavaSE的一些基础内容的相关文章

3天学习完AngularJS基础内容小结

简介:AngularJS 是一个 JavaScript 框架.它是一个以 JavaScript 编写的库. 一.AngularJS大致功能模块 二.页面交互变得简单 1.示例:计算价格 <html> <head> <meta name="viewport" content="width=device-width" /> <meta charset="utf-8"> <script src=&q

HtmlParser学习之一:基础内容

1.相关资料 官方文档:http://htmlparser.sourceforge.net/samples.html API:http://htmlparser.sourceforge.net/javadoc/index.html 其它HTML 解释器:jsoup等.由于HtmlParser自2006年以后就再没更新,目前很多人推荐使用jsoup代替它. 2.使用HtmlPaser的关键步骤 (1)通过Parser类创建一个解释器 (2)通过Filter或者Vistor访问Html中的内容. 3

Objective-c学习笔记—— 基础内容

6.5.1 多重继承 Python也支持多种继承形式.一个能继承多个基类的类定义如下: class DerivedClassName(Base1, Base2, Base3): <statement-1> . . . <statement-N> 大多数情况,最简单而言,你可以把从父类继承下来的属性查询看成是遵循深度优先,从左到右. 而不是在同一等级重复的同样类中执行两次.因此,如果一个属性没在派生类中找到,首先会在base1然后再base1的基类中,如果在那里都没发现,就会在bas

node.js基础内容

node.js node.js是建立在谷歌Chrome的JavaScript引擎(v8)的web应用程序框架. node.js 自带的运行环境可在JavaScript脚本的基础上解释和执行.这个运行是运行在浏览器以外的任何机器上执行JavaScript代码.所以也可以在服务端运行,Node.js还提供了各种丰富的JavaScript模块库,它极大简化了使用Node.js来扩展Web应用程序的研究与开发. 特性 Node.js库的异步和事件驱动的API全部都是异步就是非阻塞.它主要是指基于Node

万树IT:Android软件开发必学习的0基础内容

如今安卓系统中国的前景市场是非常广阔的,它主要针对的是移动设备市场,而如今智能手机已经占据人们生活不能缺少的一部分.所以,很多行业投入到安卓软件开发,进入到安卓开发的人才也越来越多. 安卓应用软件开发必学习的5大基础内容: 1.编程语言 2.基础应用开发 3.核心组件开发Android论坛交流 4丶安卓论坛交流学习 5.深入开发 Android软件开发必学习的0基础内容 1.编程语言的学习 安卓应用软件开发中有很多的编程语言可以使用,所以应该重点学习以下几种编程语言. ①  C/C++语言.  

css基础内容

css基础内容 CSS 指层叠样式表 (Cascading Style Sheets)样式定义如何显示 HTML 元素样式通常存储在样式表中把样式添加到 HTML 4.0 中,是为了解决内容与表现分离的问题外部样式表可以极大提高工作效率外部样式表通常存储在 CSS 文件中多个样式定义可层叠为一 一.css的引入方式 1.直接在html标签元素内嵌入css样式 <div style="font-size:14px; color:#FF0000;">行内引入</div&g

python学习之基础内容

python基础内容① 什么是python? -一种计算机语言,计算机语言分为 -高级语言:python.java.Ruby.C#.C++...... -基础语言:C语言.汇编 -计算机可以直接执行基础语言,但是基础语言比较复杂,敲代码很麻烦 -高级语言会自动转化为基础语言,再提供给计算机执行. 安装好python后,print("hello world") -python执行文件后缀名可以是任意的 -但是为了pycharm的执行方便,约定俗称使用“.py”后缀 python 的执行方

我的oracle生涯(1)基础内容篇

总结一下新手oracle相关开发者的职业生涯初期的内容,零基础的可以看看接触一下相关理论. 懒人小结:oracle-数据库(Database DB)  通过DB衍生除了类如EBS(oracle的企业级管理软件(ERP))等相关内容的基础SQL(数据库语言),PLSQL(流程化的SQL)相关小结 1/4 DDL(定义)(Database  Definition Language 下同) { CREATE ALERT DROP TRUNCATE } 2/4 DML (操作) { SELECT INS

(数据科学学习手札39)RNN与LSTM基础内容详解

一.简介 循环神经网络(recurrent neural network,RNN),是一类专门用于处理序列数据(时间序列.文本语句.语音等)的神经网络,尤其是可以处理可变长度的序列:在与传统的时间序列分析进行比较的过程之中,RNN因为其梯度弥散等问题对长序列表现得不是很好,而据此提出的一系列变种则展现出很明显的优势,最具有代表性的就是LSTM(long short-term  memory),而本文就从标准的循环神经网络结构和原理出发,再到LSTM的网络结构和原理,对其有一个基本的认识和阐述: