Java学习总结

先对自己脑海中能瞬间出现的知识做一个罗列,后续再详细展开。

1.java环境变量,JAVA_HOME,PATH:$JAVA_HOME/bin

2.java基础数据类型:byte,boolean,char short,int,long,float,double.

3.String是final修饰的不可变类,string适合做map的键值,它生来就有hash值.构造String的类有StringBulder和StringBuffer,常用方法有append()和toString(),后者是同步,线程安全的,但是效率比较低。

4.Java对象的创建,可通过new或者clone或者反射得到对象。

5.类加载,BootstrapClassLoader,ExtensionClassLoader,以及Application ClassLoader即用户自定义类加载,即ClassPath中的类加载。双亲委托,java类加载会首先使用父类,若父类中加载不到才会自己加载。

6.新建的对象都在堆内存中,对象的引用存储在栈中,指向堆中的对象。新建对象在青年代,大对象直接放进老年代。对象GC,引用计数法和可达性分析来判断对象是否可以回收。另外,GC算法有 标记清除法(标记然后清楚,会造成堆中空间稀疏,各种空闲区域),复制法(需要一半空间闲置用于复制),标记整理法(标记然后移动到堆的边缘,接着统一回收),分区法(对不同区采用不同的回收算法)。标记清楚或者标记整理适合青年代,而复制法适合老年代,青年代中多次GC未被回收的对象会转到老年代,空间可拆分。

7.Java集合框架,集合的顶层接口为Collection,Set(集合中元素不能重复)、Queue以及List的分别继承Collection.Set有HashSet(可为null),LinkedHashSet等,List有ArrarList,Vector以及LinkedList,其中还有线性表链表,线程安全与非线程安全之分。另外一个关键的是Map,Map有HashMap(可为null),Hashtable(不为null,线程安全),linkedHashMap还有ConcurentHashMap(分段hashtable)(高级,concurent包中),

8.Java接口和抽象类。具有抽象方法的类即抽象类,继承抽象类必须实现父类的抽象方法;接口中的非default方法全部是抽象方法,属性全部默认是static final型,实现接口必须实现其所有的抽象方法。

9.Java多线程,实现Runable或者Callable接口,后者有返回类型,还可以直接继承Thread类,使用时用start()方法,run()只会执行操作而不会开启新线程。

10.线程同步,Synchronized修饰方法或者代码块,实现内部锁。ReentrantLock,同步锁,可以多次过得锁,但要记得释放,获得几次就要unlock()几次。Semaphone,信号量,可以限制方法访问的线程数量,每次访问要获取信号量,然后release()。

线程通信可以通过Synchronized,while轮询以及wait/notify实现。多线程编程注意死锁。

11.Volatile修饰的变量具有多线程可见性,直接读内存,具有一定的同步效果,CAS(CompareAndSet)原子操作;ThreadLocal,顾名思义,其修饰的变量在各线程中都有复制存在,成为各线程独立使用的变量,不具有线程共享性。

12.迭代器Iterator,常用使用是 while(i.hasNext()){

  func(i.next());

}

13.for,while,do...while,循环的三种方法。break 和 continue。

14.switch case,现在也可对字符串做switch选择了。

15.error exception,都可以捕获,但是一般error不捕获,exception选择性捕获,一些RuntimeException可以适当抛出

16.数组。。。数组越界问题

17.TimerTask

18.日期操作,DateFormat,Calendar

19.NIO,Socket

20.泛型以及java 反射。

时间: 2024-10-15 20:45:55

Java学习总结的相关文章

2016最新Java学习计划

一.Java学习路线图 二.Java学习路线图--视频篇 六大阶段 学完后目标 知识点 配套免费资源(视频+笔 记+源码+模板) 密码        第一阶段 Java基础 入门 学习周期: 35天 学完后目标: 1.可进行小型应用程序开发 2.对数据库进行基本的增删改查管理 市场价值:¥5000 计算机基础知识 计算机基础.DOS常用命令.Java概述.JDK环境安装配置.环境变量配置.Java程序入门 1.2015年Java基础视频-深入浅出精华版(强烈推荐) 2.历经5年锤炼(适合初学者入

Java学习第5天

---恢复内容开始--- 今天是2016年5月4号,今天是学习JAVA学习的第5天!今天的主要学习任务是对二维数组的学习. P96 3.7.5 二维数组 动态初始化 数据类型 数组名称 [][]=new 数据类型[行数][列数]   ; 如,int a[][]=new int[7][8]; 静态初始化 数据类型 数组名称 [][]=new 数据类型 [][]{ {值,值,...},{值,值,...},...}; 如,int a[][]=new int[][]{ {1,2,3},{54,6},{8

Java学习-008-判断文件类型实例

此文源码主要为应用 Java 如何判断文件类型的源码及其测试源码.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:2015-2-2 23:02:00,请知悉. Java 判断文件类型源码如下所示: 1 /** 2 * @function 判断文件类型 3 * 4 * @author Aaron.ffp 5 * @version V1.0.0: autoUISelenium main.java.aaron.java.tools FileUtils.java assertFileType

疯狂JAVA学习计划

? Java_StudyPlane ?2015/2/20 ????????大年初二 ????????雨天 1.5小时为1个课时. JAVA学习进度表

java学习教程之代码块

学编程吧java学习教程之代码块发布了,欢迎通过xuebiancheng8.com来访问 java中的代码块包括下面几种: 1.普通代码块 2.构造代码块 3.静态代码块 1.普通代码块很简单看下面这个例子: public class Test{ public static void main(String args[]){ { //此处就是普通代码块,普通代码块中的代码按顺序执行 System.out.println("hello"); } } } 2.构造代码块 public cl

Java学习作业(14.4.21)

前三次作业都是基础语法.真的好水啊.从这次开始记录. 1.编写Java程序,把当前目录下扩展名为txt的文件的扩展名全部更名为back. 1 import java.io.*; 2 import java.lang.*; 3 4 5 public class Home { 6 7 public void reName(String path, String from, String to) { 8 File f = new File(path); //声明File对象,用于导入修改路径 9 Fi

【分享】不知道怎么学java?java学习路线送上!让你不再迷茫!

学习Java之前,先别急,静下心来好好想想:1)你对学习Java是否有兴趣?2)你是否能静下心来坚持不懈地学习?嗯,这是个容易但又绝对不应该忽略的问题,你确信自己对Java感兴趣.而且又有吃苦的准备,那你才可能学好Java!如果具备这两点条件,就请继续往下看(帖子后面我会分享一些java学习教程)Java体系涉及到三个方面:J2SE,J2EE,J2ME(KJAVA).(1)J2SE--Java 2 Platform Standard Edition,即JDK,它是三者的基础,属于桌面级应用开发:

Java 学习路线建议

在大家看之前,我要先声明两点.1.由于我本人是Java后端开发出身,因此所推荐的学习内容是Java Web和Java后端开发的路线,非Java Web和Java后端开发的同学请适当参考其学习思想即可,切勿照搬.2.下面对于[第一部分]的推荐内容,目的是让你尽快成为一个可以参加工作的Java开发者,更适用于处于待业状态,准备转行Java的同学. 如果你是在校学生,务必要在学好基础(比如计算机系统.算法.编译原理等等)的前提下,再考虑去进行下面的学习.第一部分:对于尚未做过Java工作的同学,包括一

Java学习轨迹【面向对象】(持续更新)

其中部分内容为其他博主所作,侵删 6月12日-7月每日更新 Java学习轨迹 一.面向对象 类和对象 1. new关键字所完成的事情 1)为对象开辟了新的内存空间 2)调用类的构造方法 3)返回生成对象的地址 Dog dog=new Dog(); dog是引用,new Dog()生成了一个Dog对象,引用dog指向所生成对象的地址 2.构造方法 1)构造方法必须与类名相同 2)构造方法没有返回值[且不能使用void作返回值] 3)如果在定义类的时候没有为类声明构造方法java编译器会自动为类添加

Java学习笔记3-操作符

Java基本操作符:+.-.*./.%.=.==.!=.+=.-=. 优先级:先乘除后加减,如果是连接符+号会优先往前匹配,比如 a+++++b,会被解释称 a++ ++ +b,所以会报错,需要自行使用括号隔离为 (a++) + (++b). 对象的引用如果赋值给了对象的引用后,2 个对象将指向同一个引用,有一个对象的引用重新赋值后将同时影响到另一个对象,比如 ClassName classA = new ClassName(); ClassName classB = new ClassName