Java学习指南学习笔记
1, Java是一种静态类型、动态绑定的语言。具体来说,每一个对象都是编译时确定的良好类型。同时,可以在运行时检查一个对象究竟是什么。
2, Java中除了基本数字类型之外,Java中所有的对象都是通过引用来访问。
3, 跟C++相同,不同的类实例的数据是不同的,但是方法都是相同的。
4,所有实例变量均被设置为默认值0、false或者NULL。如果使用尚未初始化的对象,将会导致一个运行时错误。
5,命令行运行java/javac时,需要在项目classpath。何为项目classpath,如果代码中没有package语句,则classpath为当前目录。如果有package语句,则根目录为根据package上移目录。如果通过java -d指定了别的output目录,则运行java class的时候也需要指定classpath到对应目录。
比如javac self\equal.java, java self.equal
6, jar -cvf abc.jar abc 将abc目录里的内容打包为abc.jar
-xvf abc.jar 将abc.jar的内容解压
-tvf abc.jar 查看abc.jar的内容
-cvmf mypairvalue.mf abc.jar abc 将abc的内容打包,同时设置mypairvalue中的属性。可以指定Main-Class 为abc.classname,jar包就可以通过java -jar abc.jar 运行
7, 一场包括受查异常(throw声明的)和非受查异常(RuntimeException和Error的子类),可以通过printStackTrace看到异常的栈轨迹
8, Java的构造函数不能用abstract, synchronized, final修饰
9, 显示的调用System.gc()方法可以提示垃圾回收器进行一次清扫。在一个对象被垃圾回收器删除之前,其finalize方法会被调用
10, 接口取代了在C++中使用的多重继承
11, 可以用this在构造函数入口处调用另一个构造函数,也可以通过super在构造函数入口处调用基类的构造函数。因为默认情况下基类的默认构造函数会被隐式调用,super的调用仅用来调用基类带参数的构造函数。
12, Java的interface中函数默认为public,abstract的,implements该interface的类必须实现所有的函数,否则必须为abstract
13, 可以在任何大括号间声明一个类.
p190, 内部类的一个重要用途是建立适配器类。适配器类的作用是绑定至一个类,同时不破坏其封装性。方法的内部类引用的任何方法的局部变量都必须为final,因为在一次方法的调用中,所建立的所有的内部类实例必须看到相同的局部变量。
p199, ==检查同一性,只有指向同一个对象时才相等,equals检查相等性,值相等,就相等。自定义的类可以覆盖equal函数(还有toString)
p201, 对象可以使用Object的clone方法建立自己的副本(浅拷贝),前提是要实现java.lang.Cloneable接口。clone是保护方法,可以通过重定义来声明为public
Sheep one = new Sheep();
Sheep another = (Sheep)one.clone();
如果要实现深拷贝,必须在clone函数中,手动拷贝每一个变量
p204, 通过实例的getclass方法,或者类的.class方法都可以得到一个特定类的引用(Class对象)。通过这个实例,可以调用getName或者newInstance方法创建实例,注意返回的是Object,需要强制转化为对应类型。
还可以通过forName查找一个特定类的的引用 Class sneakersClass = Class.forName("Sneakers");
p212, 创建对象除了可以通过classname.newInstance(),也可以先Date.class.getConstructor,再调用构造函数的newInstance
p214, 反射使我们能够在运行时完成编译时能完成的任何工作。
p221, 为什么要使用泛型,直接用Object类不行么?
p258, Runnable的run方法必须没有任何参数,也没有任何返回值。
p261, 实现Runnable接口比继承Thread类更好,因为后者需要提供Thread类所有的公共API
p262, 启动一个线程
new Thread(){
public void run(){System.out.println("Hello World!");}
}.start()
p263,stop、suspend和resume都已经废弃不再使用,因为这个方法以一种不合作的方式得到线程的控制,容易导致意想不到的结果,如死锁。应使用interrupt()
p264,调用join()方法将导致调用者阻塞,知道目标线程完成为止;
p265, 可以通过setDeamon来设置后台运行,后台运行的程序当所有程序结束时也会被系统自动结束
P273,notify()会唤醒等待中的一个线程,如果多个线程在等待,java会按任意条件选择其中的一个
p278, 如果我们希望不同的线程使用不同的值,则需要使用ThreadLocal
p279, 优先级高的线程会抢占低优先级的线程的执行。相同的线程会一直执行当前线程,直至:
1,调用Thread.sleep()或者wait()
2,等带锁,运行一个同步方法
3,在I/O中被阻塞
4,通过yield调用交出控制权
5, 完成或者调用stop()
p284, 线程组主要是为了识别和控制某一项任务的所有线程,如限制其行为。线程组可以在创建线程的时候传递给构造函数
Java学习指南学习笔记的更多相关文章
- shell学习指南-阅读笔记
shell学习指南真不是刚开始学习shell应该看得书,虽然其中讲了简单的linux命令,shell语法等,但是每章也有些深入和生僻地方,我想如果我刚学shell看到这样的地方一定会头疼的要死.或许也 ...
- 《Servlet和jsp学习指南》 笔记1
chapter 1 Servlet 4个java 包: 对于每一个http请求,Servlet请求都会创建一个ServletRequest实例,并将它传给Servlet的service方法.Servl ...
- 《Servlet和jsp学习指南》 笔记2
chapter 13 请求和响应的装饰 初步了解Decorator模式: 在不修改一个对象的类的源码的情况下,装饰这个对象的行为. chapter 14 异步处理 异步Servlet和Filter,只 ...
- shell脚本学习指南-学习(2)
1.I/O重定向符:< > >与管道 | #! /bin/bash echo -n "Enter your name!" //输出 printf &qu ...
- shell脚本学习指南-学习(1)
1.先看下面这个命令: $who | wc -l 计算当前登陆的用户个数: $who 当前登陆的有哪些用户: pipeling( | )可以在两个程序之间建立管道,左侧的结果成为右侧的 ...
- Hadoop权威指南学习笔记二
MapReduce简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考,有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.n ...
- Hadoop权威指南学习笔记三
HDFS简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考.有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.net/my ...
- JavaScript 权威指南-学习笔记(一)
本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! ## JavaScript 权威指南-学 ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
随机推荐
- Thinking in UML-2-建模基础
建模的问题可以分为两个: 怎么建 模是什么 怎么建:角度不同决定了建模方向不同.所以首先要决定抽象的角度即建立这个模型的目的是什么. 模是什么:人+事+物+规则 我们这样来建立模型: 问题领域 = n ...
- 处理SecureCRT中使用vim出现中文乱码问题
处理SecureCRT中使用vim出现中文乱码问题 引用原文:http://blog.chinaunix.net/uid-20639775-id-3475608.html因为cat没有问题,定位是vi ...
- php strrpos()与strripos()函数不同之处在哪里呢
strripos() 函数 定义和用法strripos() 函数查找字符串在另一个字符串中最后一次出现的位置.如果成功,则返回位置,否则返回 false.语法strrpos(string,find,s ...
- WPF:基础知识
WPF:1.数据驱动 2.UI定义与运行逻辑分离 一. 1.编译 /t:exe 命令行程序:/t:winexe 图形用户界面程序:/t:library 动态链接库 2.启动 1)编译后生成的App.g ...
- asp.net 之 数据库导入treeview
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- 【jQuery】window.onload 和 $(document).ready() 的区别
... 在Stack Overflow上看到了这个问题,自己翻译了过来. The onload event is a standard event in the DOM, while the read ...
- javascript 面向对象(转)
1.使用[]调用对象的属性和方法 function User() { this.age = 21; this.sex = "男?"; } var user = new User() ...
- lambda的使用ret = filter(lambda x : x > 22 ,[11,22,33,44])
#!/usr/bin/env python #def f1(x) : # return x > 22 ret = filter(lambda x : x > 22 ,[11,22,33,4 ...
- Giving Data Backup Option in Oracle Forms 6i
Suppose you want to give the data backup option in Oracle Forms application to some client users, wh ...
- HTML 方法
姓名输入框:<input type="text" value="默认有值"/> 密码输入框:<input type="text&qu ...