基础知识这种东西,没注意到的永远比想象中多.大部分都是在面试中问到的...

1.static关键字

  变量,方法修饰;静态代码块;静态内部类;

  静态导入:import static ,静态方法省略类名,直接调用.

2.final关键字

  修饰基础数据类型时,表示数值恒定不变,修饰引用类型时,表示指向的引用不变,但引用的具体值确实可以修改的

  使用final方法,在一定程度上有可能提高程序效率,将一个方法设成final后,编译器就可以把对那个方法的所有调用都置入“嵌入”调用里,编译器会忽略为执行方法调用机制而采取的常规代码插入方法(将自变量压入堆栈;跳至方法代码并执行它;跳回来;清除堆栈自变量;最后对返回值进行处理),而是使用方法体内实际代码的副本作为实际调用,避免方法调用时的系统开销,但是,方法体积大时,方法内部的时间抵消了系统开销。通常,只有在代码量非常小或者明确方法不被覆盖时,才将其定义为final.

3.transient关键字

  在新建entity时,通常我们会将其进行序列化,常规操作为 implements java.io.Serializable , 但是实体中某些字段属性可能并不需要传输,此时,可以用transient关键进行修饰,则此字段不进行序列化;

  另,除开Serializable 接口,Externalizable接口也可实现序列化,通过writeExternal()和readExternal()方法,可以执行一些特殊操作.

4.sleep()与wait()方法

  二者都用于线程调度,二者都会释放cpu资源,但是,sleep()不会释放掉cpu的所有权,也就是说对象的锁并没有释放,其他线程仍无法访问这个对象;而wait()会释放掉锁,允许其他线程的访问.

5.常量池

  Byte,Short,Integer,Long,Character,Boolean 这五种包装类型,默认[-128,127]间使用常量池;而Float,Double并没有实现常量池;

  String类型使用引号创建的对象才会被放进常量池(包括使用+),而使用new创建出来的对象并不会放入常量池中;

  String intern()方法,查询当前常量池中是否含有与某字符串equals()的常量,如果有则返回其引用,没有则将自己添加进常量池.

6.volatile

  并发时,原子性与可见性作为两个保证安全条件,volatile具有可见性,但不具有原子性;

  volatile变量修饰的值被修改时,底层命令带lock前缀,将处理器内存回写到内存,然后根据缓存一致性机制使其他缓存失效,保证可见性.

7.ConcurrentHashMap

  hashMap 线程不安全,多线程下使用put()会引起死循环;hashTable效率低下,并发下访问其对象必须竞争同一把锁;

  ConcurrentHashMap由可重入锁Segment 与 键值对 HashEntry 组成.ConcurrentHashMap使用锁分段技术保护不同段的数据,避免像hashTable一样并发竞争同一把锁引起的效率问题.

  ConcurrentHashMap通过两次hash将元素分布到不同的Segment 上,然后Segment 分段保护其段上数据.

  hashTable 在get()数据时也需要加锁,而ConcurrentHashMap的get()并不需要加锁(空值时加锁重读),因为HashEntry 中的值被定义为volatile,能够保持可见性.

  ConcurrentHashMap的put()操作需要加锁,先定位到对应的Segment ,然后在Segment 中进行插入.

  ConcurrentHashMap的size()并不是单纯的等于所有Segment 的和,计算时,其先进行两次不加锁的计算进行比较,若存在变动,则加锁进行计算.

  ConcurrentHashMap 弱一致性.

8.finally块中的语句一定会执行到么?

  try之前就return,则并不会执行到;

  exit()方式执行,不会被执行到;

  finally块的语句在try或catch中的return语句执行之后返回之前执行,finally块中的修改语句不能影响到try或者catch中return已经确定的值,会发生覆盖.

java基础点总结的更多相关文章

  1. 需要了解的几个Java基础点

    关键字 native:表示要调用非Java语言写函数,比如用C语言使用JNI实现的接口.比如windows环境的dll文件.举例:Object.hashcode() 位运算 << n:左移 ...

  2. java基础点

    1.eclipse什么时候编译java类文件 2.在同一包中的类可以相互引用,无需用import语句 3.在Java eclipse用ALT输入特殊符号 4.if else等语句,什么时候可以不加括号 ...

  3. java基础点<一>

    1. 九种基本数据类型的大小,以及他们的封装类.byte,short,int,long,boolue,float,double,char,特殊voidByte,Short,Integer,Long,B ...

  4. Java学习---面试基础知识点总结

    Java中sleep和wait的区别 ① 这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类. sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线 ...

  5. Java如何打好牢固的基础?

    如果纯粹是为了学Java,那么不建议阅读本文,因为本文不是从理论和教科书的角度讲述如何打好java基础,而是会从"快速用java挣钱"这个角度,讲边学.边做项目和边提升的方法. 在 ...

  6. spring-retry的简单使用

    添加Maven依赖: <dependency> <groupId>org.springframework.retry</groupId> <artifactI ...

  7. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  8. Java虚拟机垃圾回收:基础点(转载)

    1.Java虚拟机垃圾回收 垃圾回收,或称垃圾收集(Garbage Collection,GC)是指自动管理回收不再被引用的内存数据. 在1960年诞生于MIT的Lisp语言首次使用了动态内存分配和垃 ...

  9. java类及编写public类的基础点

    1.一个java文件中只能有一个public类.且公共类名称必须与java文件名一致,否则会出现错误提示.与其他面向对象编程语言的一样,在利用java分析问题时,基本思路即为将问题的属性(静)与行为( ...

随机推荐

  1. python爬虫系列之初识爬虫

    前言 我们这里主要是利用requests模块和bs4模块进行简单的爬虫的讲解,让大家可以对爬虫有了初步的认识,我们通过爬几个简单网站,让大家循序渐进的掌握爬虫的基础知识,做网络爬虫还是需要基本的前端的 ...

  2. project3 blockchain

    [概念] 做服务的时候main里面不能单独有东西,都得包起来. Identifier expected是因为没有main函数 雾草,task3还要加proxy, add再干别的.难受!妈的,什么代理模 ...

  3. https与http的区别

    HTTPS协议 由于http协议中,服务器和客户端之间传输的报文是明文,很容易被攻击截取,为了保证一些敏感信息的安全,https协议在http的基础上加了一层SSL协议,依靠证书来保证服务器和客户端之 ...

  4. scrapy 爬取斗罗大陆漫画

    # -*- coding: utf-8 -*- import scrapy import json import os import urllib import time from scrapy.ht ...

  5. U-Mail企业邮箱如何导入授权文件

    首先,由于U-Mail有Linux版本与Windows版本的区别,并且都非常简单,所以就有了下面的步骤: Windows版本  <点击快速跳转> Linux版本 <点击快速跳转> ...

  6. SSL及使用openssl实现CA

    TLS如何实现各种功能?数据如何加密在网络上传输? 网景(Netscape)公司在应用层和传输层加入了半层,把这个半层称之为SSL,SSL不是软件,可以理解是一个库,当http交给tcp层之前先通过s ...

  7. create-react-app创建项目并用git上传至GitHub及展示预览效果

    1.在本地中创建一个项目所在的文件夹 2.npm -g create-react-app 3.在此文件夹下 create-react-app react-demo (项目名) 4.cd react-d ...

  8. Linux 安装源码软件

    linux下,源码的安装一般由3个步骤组成:配置(configure).编译(make).安装(make install) 过程中用到configure --prefix  --with:其中--pr ...

  9. Filter的介绍及使用

    转:http://blog.csdn.net/zhaozheng7758/article/details/6105749 一.Filter的介绍及使用 什么是过滤器? 与Servlet相似,过滤器是一 ...

  10. 【机器学习】K均值算法(II)

    k聚类算法中如何选择初始化聚类中心所在的位置. 在选择聚类中心时候,如果选择初始化位置不合适,可能不能得出我们想要的局部最优解. 而是会出现一下情况: 为了解决这个问题,我们通常的做法是: 我们选取K ...