java笔记【1】

来源:互联网 发布:软件系统运维 编辑:程序博客网 时间:2024/06/14 22:18

JDK:java开发环境 JRE+开发工具

JRE:java程序运行环境 JVM+核心类库
JVM:java虚拟机,保证java的跨平台性


1.set classpath=  可以直接使用java命令(不能直接使用javac命令)

2.浮点型数据常量默认的是double类型
3.java中没有goto语句
4.$array.length【表示一维数组元素个数(二维数组行数)】
  System.arraycopy(source,0,dest,0,x)【复制source(0到x)到dest】
  Arrays.sort($array);【升序排序,import java.util.Arrays】
5多态存在的三个必要条件:要有继承;要有重写或重载;父类引用指向子类对象。
封装:将变化隔离,提高重用性和安全性;只要能达到目的,简化代码的都可以认为是封装
方法重载是一个类中的多个函数函数名相同,参数列表不同;方法重写是父类和子类中函数完全相同。
6.类:构造方法没有返回值
7.对象==【内存地址是否相同】.equals()【地址是否相同(在类中默认调用Object类的方法,有些如String、Date、Integer类已经复写)】
8.String a="a"; String b="a";a==b;    String c=new String("a"); c!=a;  a.equals(b);  a.equals(c);【$String.length()】
9.this()【调用无参构造方法(必须放在首行)】【不能放在静态方法中】
10.静态变量是对所有对象共享的
11.static{ }静态代码块——先执行且仅一次。
12.在方法中定义的内部类只能访问方法中的 final 类型的局部变量
13.子类构造方法的首行默认有一个super();语句
14.super调用父类

15.子类复写父类中的方法时,被子类复写的方法不能拥有比父类中更严格的访问权限

【严格程度:public<protected<default<private】

16.超类Object有toString方法(默认extend Object)
17.抽象类中的abstract方法必须被复写,不能和private、final、static一起用

18.interface接口类似于抽象类,但更为严格,方法必须是abstract,必须复写,

 变量是final,不可再赋值 (习惯是public)

19.interface接口可以支持多继承interface(扩展)/class(实现) A implements C,B
20.instanceof关键字:对象名称 instanceof 类名称(是否是这个类)
21.匿名内部类方法(new 接口名称{复写方法})

22.常见异常:

RuntimeException:

SystemException系统异常

NullPointerException - 空指针引用异常

ClassCastException - 类型强制转换异常。

IllegalArgumentException - 传递非法参数异常。

NumberFormatException - 数字格式异常

ArithmeticException - 算术运算异常

ArrayStoreException - 向数组中存放与声明类型不兼容对象异常

IndexOutOfBoundsException - 下标越界异常

SecurityException - 安全异常

UnsupportedOperationException - 不支持的操作异常

NegativeArraySizeException - 创建一个大小为负数的数组错误异常




IOException - 输入输出异常

FileNoFoundException - 找不到文件异常

23.异常类:①Error②Exception
24.使用方法抛出异常在调用方法时要写【try{使用的方法}catch(异常){}】
25.包:JDK中常见的包:
① java.lang — 包含一些 Java 语言的核心类,如 String、Math、Integer、System
和 Thread,提供常用功能。在 java.lang 包中还有一个子包:java.lang.reflect
用于实现 java 类的反射机制。
② java.awt — 包含了构成抽象窗口工具集(abstract window toolkits)的多个类,
这些类被用来构建和管理应用程序的图形用户界面(GUI)。
③ javax.swing — 此包用于建立图形用户界面,此包中的组件相对于 java.awt
包而言是轻量级组件。
④ java.applet — 包含 applet 运行所需的一些类。
⑤ java.net — 包含执行与网络相关的操作的类。
⑥ java.io — 包含能提供多种输入/输出功能的类
⑦ java.util — 包含一些实用工具类,如定义系统特性、与日期日历相关的函数。
26.默认的访问控制成员可以被这个包中的其它类访问。
如果一个子类与其父类位于不同的包中,子类也不能访问父类中的默认访问控制成员。
27.protected既可以被同一个包中的其它类访问,也可以被不同包中的子类访问。
28.命名习惯:
◆ 包名中的字母一律小写,如:demo.java。
◆ 类名、接口名应当使用名词,每个单词的首字母大写,如:TestPerson。
◆ 方法名,第一个单词小写,后面每个单词的首字母大写,如:talkMySelf。
◆ 常量名中的每个字母一律大写,如:COUNTRY。
29.jar命令:
jar –cvf create.jar demo
• -c:创建新的存档
• -v:生成详细输出到标准输出上
• -f:指定存档文件名
• create.jar:是生成 jar 文件的名称

• demo:要打成 jar 文件的包

30.线程:

①extendsThread(java.lang.Thread)【启用多线程必须调用start()方法,同时也就调用了run()方法(资源不共享)】

②implement Runnable(java.lang.Runnable)【启动时调用newThread.start()方法】【常用(资源共享)】

31.final 只对内存起作用,可以(在堆中改变内存中储存的值)

32.对于两种不同的类属性,static属性与instance属性,初始化的时机是不同的。

instance属性在创建实例的时候初始化,static属性 在类加载,也就是第一次用到这个类的时候初始化,对于后来的实例的创建,不再次进行初始化。

 

33.★ java程序设计中有关内存管理的经验

 

1.最基本的建议是尽早释放无用对象的引用。如:

A a = new A();

//应用a对象

a = null; //当使用对象a之后主动将其设置为空

….

注:如果a 是方法的返回值,不要做这样的处理,否则你从该方法中得到的返回值永远为空,而且这种错误不易被发现、排除

 

2.尽量少用finalize函数。它会加大GC的工作量。

3.如果需要使用经常用到的图片,可以使用soft应用类型。它尽可能把图片保存在内存中

4.注意集合数据类型,包括数组、树、图、链表等数据结构,这些数据结构对GC来说,回收更为复杂。

5.尽量避免在类的默认构造器中创建、初始化大量的对象,防止在调用其自类的构造器时造成不必要的内存资源浪费

6.尽量避免强制系统做垃圾内存的回收,增长系统做垃圾回收的最终时间

7.尽量避免显式申请数组空间

8.尽量做远程方法调用类应用开发时使用瞬间值变量,除非远程调用端需要获取该瞬间值变量的值。

9.尽量在合适的场景下使用对象池技术以提高系统性能。

 

 

34.POJO(Plain OldJava Objects)实体类(类中只有数据和get、set方法)


建议使用静态的场景:
(1)变量所包含的对象生命周期较长。
(2)变量所包含的对象数据稳定。
(3)该类的对象实例有对该变量所包含的对象的共享需求。


0 0