容易忽略的Java知识点(整理ing)

由于最近在准备一些笔试复习到的相关Java知识点,不禁感慨:这么多年对Java懂得还太少!

1、关于finally关键字

IBMDeveloperWorks中有一篇已经说明地非常详细:

关于 Java 中 finally 语句块的深度辨析

补充下对Java设计者设计finally语句的初衷想法:我们无法知道异常发生的时间,但是我们需要确保的是无论它是否发生一些关键资源在GC回收内存时得到妥善处理(例如IO流、数据库连接等)。

误区点:return前finally语句的执行机制

2、关键字synchronized,volatile,transient

①synchronized关键字是同步关键字,它包括两种用法:synchronized方法和synchronized代码块。

②volatile修饰的成员变量在每次被线程访问时,都强迫从共享内存中读取该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值写回到共享内存中。这样在任何时刻,两个不同线程总是看到某个成员变量的同一个值,它只能用于修饰变量。

③transient关键字表示在该对象被序列化(串行化、持久化)时不保存该属性。它只能用于修饰变量或者常量。

时间: 2024-10-10 23:26:23

容易忽略的Java知识点(整理ing)的相关文章

Java知识点整理——(2)编程基础

一.Java命名规则 类名:对于所有的类来说,类名的首字母应该大写.如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass . 方法名:所有的方法名都应该以小写字母开头.如果方法名含有若干单词,则后面的每个单词首字母大写. 二.Java数据类型 基本数据类型(内置数据类型) byte 8位.有符号.-128-127,默认值0 short 16位.有符号.-32768-32767,默认值0 int 32位.有符号.-2,147,483,648-2,147,48

Java知识点整理(二)

List.Set.Map典型实现 HashMap/ConcurrentHashMap Java线程池 Java线程池详解 如何更好的使用JAVA线程池 Spring MVC Spring MVC架构浅析 Spring MVC实践 SpringAutowired实现原理 Spring Boot Spring Cloud Dubbo和Spring Cloud区别.优劣势? 一致性哈希 原文地址:https://www.cnblogs.com/kaleidoscope/p/9796560.html

java知识点整理

一.http和tcp/ip的区别?http是应用层协议,主要解决如何封装数据.tcp/ip则是传输层协议,主要解决数据如何在网络中传递.web应用使用http协议作为应用层协议来封装成http文本协议,然后使用tcp/ip做传输层协议将信息发布到网络上. 二.xml的解析方法?(DOM.SAX)基本的解析方式.DTD.XSLTSAX是基于事件流的解析,DOM是基于XML文档树结构的解析 DOM解析的优缺点?原理:解析器读入整个文档,构建一个驻留内存的树结构,然后就可以使用了.优点:整个树结构存在

Java知识点整理(9)——static变量和方法

1.在类中,用static变量声明的成员变量叫静态变量,或者叫做类属性.类变量.它为该类的公有变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化. 2.类变量是类的公有变量,属于类,被该类的所有实例共享,当类被载入时显式初始化. 3.可以使用“对象.类属性”来调用.不过,一般都使用“类名.类属性”. 4.static变量置于方法区中. 5.用static声明的方法称为静态方法.不需要对象就可以调用(类名/方法名). 6.static方法只能使用static变量,非static方法可以使

Java 多线程知识点整理

1.如何停止一个正在运行的线程? 使用共享变量,用volatile变量修饰,线程循环去访问该变量.如果线程因为发生某些事件进行阻塞,可以使用Thread的interrupt方法.可以使一个被阻塞的线程抛出一个中断异常,从而使线程提前结束阻塞状态,退出堵塞代码. class MyThread extends Thread { volatile boolean stop = false; public void run() { while (!stop) { System.out.println(g

【Android 面试基础知识点整理】

针对Android面试中常见的一些知识点整理,Max 只是个搬运工,感谢本文中引用文章的各位作者,给大家分享了这么多优秀文章,对于其中的解析,是原作者个人见解,有错误和不准确的地方,也请大家积极指正. 本文将持续更新,同时我也将其放在Github上:Point-of-Android 同时可以看Max的个人博客:海上钢琴师 Android中的异步任务机制 Android中AsyncTak的使用与源码分析 http://blog.csdn.net/bboyfeiyu/article/details/

给Java新手的一些建议----Java知识点归纳(J2EE and Web 部分)

J2EE(Java2 Enterprise Edition) 刚出现时一般会用于开发企业内部的应用系统,特别是web应用,所以渐渐,有些人就会把J2EE和web模式画上了等号.但是其实 J2EE 里面并不仅仅是web,可以看到很多其中的规范都是通用的,目的是为了高效开发出健壮的服务企业业务模式的应用系统.J2EE中也是可以没有web界面的应用,而现在面向大众用户开发的网站往往也会使用到很多的J2EE的技术,所以J2EE和web开发的概念都是融合在了一起了. 我本人在JAVA开发刚入行的时候,也是

C#初级知识点整理及VS的简单使用

C#预处理器指令#define #undef 声明一个不需赋值的变量注意的一点事它必须放到using 上面,如 #define TEST using System.xxx; public class Task { public Task() { } } #region #endregion这是一组用来帮助管理代码布局的指令 #if #else #elif #endifif else 没什么好说的.不过这个一般要跟#define搭配使用 #warn #error输出警告或错误 #if DEBUG

Java细节整理——数组与内存控制

重点:使用Java数组之前,必须对数组对象进行初始化. 当数组的所有元素都被分配了合适的内存空间,并指定了初始值时,数组的初始化完成.程序以后将不能重新改变数组对象在内存中的位置和大小. 知识点整理: 1.数组的初始化有以下两种方式: 1)静态初始化:初始化时由程序员显示指定每个数组元素的初始值,由系统决定数组的长度. 2)动态初始化:初始化时程序员只指定数组的长度,由系统为数组元素分配初始值. 不管使用哪种方式初始化Java数组,一旦初始化完成,该数组的长度就不可改变. 代码示例: publi