当前位置:文档之家› JAVA尚学堂300集第一季笔记

JAVA尚学堂300集第一季笔记

JAVA尚学堂300集第一季笔记
JAVA尚学堂300集第一季笔记

第一季

1、总共大约30小时。

2、连载官网https://www.doczj.com/doc/a311915913.html,

3、JDK(java开发工具包)(JRE(java运行时环境)(JVM(JAVA虚拟机)))—包含关系

4、java开发环境配置

(1)下载JDK(https://www.doczj.com/doc/a311915913.html,/technetwork/java/javase/downloads/index.html)

步骤:oracle官网—Downloads—Java—Java SE—Java Platform(DOWNLOAD)—Accept License Agreement—计算机(属性64位)—下载Windows x64,(x86是32位)(2)安装JDK:选择默认路径即可,点击下一步。bin二进制缩写

(3)环境变量设置:

1)JAVA_HOME:C:\Program Files\Java\jdk1.7.0_21

步骤:点击计算机—属性—高级系统设置—高级—环境变量—找到JDK安装的默认路径复制C:\Program Files\Java\jdk1.7.0_21—新建系统变量JAVA_HOME,变量值粘贴复制的默认路径

2)path(执行dos命令,系统会在path指定的路径中寻找该命令对应的可执

行文件)

步骤:找到bin文件的默认路径C:\Program Files\Java\jdk1.7.0_21\bin将默认路径或“%JAVA_HOME%\bin”增加到path变量值最前面,用分号; 将多个目录用隔开classpath——JDK5.0以上版本,可以不对其进行配置!

3)测试是否安装成功:运行—cmd—输入java –version

配置完java环境变量后,最好重启运行窗口。重启后新配置的环境变量才能生效。

5、在E盘新建文件mycode(用于存放源代码文件),文件名为拼音或英文,如mycode,

在mycode文件中新建文本文档Welcome,扩展名改为.java,类的首字母大写,类名与文件名一样,右键用记事本打开Welcome,编辑并保存。

查看Welcome输出:运行—cmd—输入e:(进入E盘)—cd mycode (cd—change directory改变目录)—dir(查看mycode文件下所有文件和子文件)—javac Welcome.java(编译,编译器创建class字节码文件)—java Welcome(执行)显示扩展名方法:在mycode文件夹中,组织—文件夹和搜索选项—查看—隐藏已知文件类型的扩展名,不打对钩

文本编辑器:notepad++,UltraEdit,EditPlus

集成开发环境:Eclipse(https://www.doczj.com/doc/a311915913.html,)

在记事本中首字母缩进按Tab键。

6、JAVA注释

//单行注释;/*…….*/多行注释;

浮点数存在舍入误差,很多数字不能精确表示。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类——表示大小数;BigInteger类——表示大整数;

7、eclipse下载:https://www.doczj.com/doc/a311915913.html,/downloads/

8、包package:

为了解决类之间的重名问题

为了便于管理类:合适的类位于合适的包。

package通常是类的第一句非注释性语句。

包名:域名倒着写,再加上模块名,并与内部管理类,如:cn.shangxuetang.test 写项目时都要加包,不要使用默认包。

9、API文档用来查看所有的package以及class的用法。

10、生成自己项目的API文档

文档注释:/**,在所要注释的类前注释说明

常用的java注释标签:

@Author作者;@version版本;@param参数;@return返回值的含义;@throws 抛出异常描述;@deprecated废弃。建议用户不在使用该方法。

步骤:点击Package Explorer里的项目名(如mypro)—右键Export—Java—Javadoc —下一步选中要生成API文档的项目名—改变Destination路径—finish—yes all。找到保存的API文档,打开index.html

11、测试Scanner类的使用,如何接受键盘的输入

import java.util.Scanner:导入util包下的Scanner类//其他包的类如果要用,必须先导入Scanner s=new Scanner(System.in);

String str=s.next();//程序运行到next会阻塞,等待键盘的输入!—输入字符串

int a=s.nextInt();//输入数字

12、面向对象编程的本质:以类的方式组织代码,以对象的方式组织(封装)数据。

13、构造器用于构造该类的实例;通过new关键字调用;构造器虽然有返回值,但是不能定义返回类型(返回值的类型肯定是本类),不能在构造器里调用return;如果我们没有定义构造器,则系统会自动定义一个无参的构造函数。如果已定义则编辑器不会添加;构造器的方法名必须与类名一致;作用:构造该类的对象,经常也用来初始化对象的属性。

14、方法的重载是指一个类中可以定义相同的名字,但参数不同的多个方法,调用时,会根据不同的参数表选择对应的方法。

两同三不同:同一个类,同一个方法名;参数列表不同(类型、个数、顺序不同)15、static从属于类的只能使用类的方法,从属于对象的既可以使用类的方法也可以使用对象的方法。

static只能调用static方法;非static既能调用static方法,也能调用非static方法。

调用:类名.方法名;类名.类属性;

16、this关键字:普通方法中,this总是指向调用该方法的对象;构造方法中,this总是指向正要初始化的对象;this不能用于static方法。

this();——通过this调用其他无参的构造方法,必须位于第一句。

17、面向对象的三大特征:继承,封装/隐藏,多态(为了适应需求的多种变化,使代码变得更加通用)

Java中只有单继承(一个类只能有一个直接父类);java中的多继承,可以通过接口来实现。

方法的重写:重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型,但是实现内容不一样。重写方法不能使用比被重写方法更严格的访问权限(由于多态)。重写与重载没关系

18、Object类是所有Java类的根基类。

如果在累的声明中未使用extends关键字指明其基类,则默认基类为Object类。

Ctrl+t或F4查看某个类的层次结构,ctrl查看某个类的API文档

19、super类是直接父类对象的引用;

“is –a”关系实验继承;”has-a”关系使用组合。

20、final关键字:修饰变量——(变为)常量;该方法不可被子类重写,但是可以被重载;修饰的类不能有子类,不能被继承。比如:Math、String

21、封装:可见性—private—同一个类;default—同一个包中,同一个类;protected—子类,同一个包中,同一个类;public—所有类,子类,同一个包中,同一个类

封装要点:

类的属性的处理:

(1)一般使用private(除非本属性确定会让子类继承)

(2)提供相应的get/set方法来访问相关属性。这些方法通常是public,从而提供对属性的读取操作。(注意:boolean变量的get方法是用:is开头!)

(3)一些只用于本类的辅助性方法可以用private,希望其他类调用的方法用public 22、多态性:就是程序的最终状态只有在执行过程中才被决定而非在编译期间就决定了。java中实现多态:引用变量的两种类型——编译时类型(模糊一点,一般是一个父类)由声明时的类型决定;运行时类型(运行时,具体是哪个子类就是哪个子类)由实际对应的对象类型决定。

多态的存在要有3个必要条件:要有继承,要有方法重写,父类引用指向子类对象(如Animal a=new Cat();Animal b=new Dog();Animal c=new Pig();)。

23、抽象类:是一种模版模式。抽象类为所有子类提供了一个通用模板,子类可以在这个模板基础上进行扩展。

通过抽象类,可以避免子类设计的随意性。通过抽象类。我们就可以做到严格限制子类的设计,使子类之间更加通用。

要点:有抽象方法的类只能定义成抽象类;抽象类不能实例化,即不能用new来实例化抽象类;抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例,只能用来被子类调用;抽象类只能用来继承;抽象方法必须被子类实现。

抽象方法的意义在于:将方法的设计和方法的实现分离了。

24、接口interface:接口中只有——常量、抽象方法。

接口实现——implements。接口是最抽象的。

接口中常量定义时,写或不写前缀都是默认有——public static final

接口中方法定义时,写或不写前缀都是默认有——public abstract

注意:接口就是比抽象类还抽象的抽象类,可以更加规范的对子类进行约束。全面地专业地实现了:规范和具体实现的分离。接口就是规范,定义的是一组规则,体现了现实世界中“如果你是…则必须能…”的思想(如:如果你是天使,则必须飞)。接口的本质是契约,就像我们人间的法律一样。制定好后大家都遵守。项目的具体需求是多变的,我们必须以不变应万变才能从容开发,此处的“不变”就是“规范”,因此,我们开发项目往往都是面向接口编程。

某个接口可以支持继承多个接口。(interface A extends Interface A,Interface B)

25、CallBack回调、Hook勾子函数

26、内部类(innerclasses)一般情况下,我们把类定义成独立的单元。有些情况下,我们把一个类放在另一个类的内部定义,称为内部类。

内部类的作用:

(1)内部类提供了更好的封装。只能让外部类直接访问,不允许同一个包中的其他类直接访问。

(2)内部类可以直接访问外部类的私有属性,内部类被当成其外部类的成员。但外部类不能访问内部类的内部属性。

内部类的使用场合:由于内部类提供了更好的封装特性,并且可以很方便的访问外部类

的属性。所以,通常内部类在只为所在外部类提供服务的情况下优先使用。

注意:

1)普通的成员内部类可以访问外部类的普通的属性和方法。

2)普通的成员内部类可以看作外部类的一个普通的属性。普通内部类对象必须寄宿在外部类对象里面。必须先有外部类对象,才能有内部类对象。

3)静态内部类加了static修饰以后,静态内部类对象存在,它的外部类对象不一定存在,静态内部类不能访问外部类的普通的属性和方法,但是静态内部类可以直接访问外部类的静态的属性和方法。

27、Array数组:创建数组对象——a = new int[4];

初始化(对数组元素的初始化)

默认初始化:数组元素相当于对象的成员变量,默认值跟成员变量的规则一样(如数字0,布尔false)。

28、String:不可变字符序列!

可变字符序列:StringBuilder(线程不安全,效率高,用的较多),StringBuffer(线程安全,效率低);两个用法一样。

29、File类:File f5=new File("e:/mycode/aa/bb/cc/ddd");

f5.mkdirs();//不管前面的父目录是否存在,都创建

//f5.mkdir();如果前面的父目录存在,就创建,不存在就创建失败

30、异常:Computer c=null;

c.start();——出现NullPointerException//对象是null,调用了对象方法或属性

不要在finally中使用return

执行顺序:执行try,catch,给返回值赋值——执行finally——return

Ctrl+t 选中查看层次结构

第二季

32、泛型类:声明时使用泛型

概念:泛型就是参数化类型,使用广泛的类型

起因:数据类型不明确:

装入数据的类型都被当作Object对待,从而“丢失”自己的实际类型。

获取数据时往往需要转型,效率低,容易产生错误

Object可以接受任意类型,因为发生多态

获取值:

1、强制类型转换

2、手动类型检查:避免转换错误https://www.doczj.com/doc/a311915913.html,ng.ClassCastException:

使用时确定类型(引用类型):

1、安全:在编译的时候检查类型安全

2、省心:所有的强制类型转换都是自动和隐式的,提高代码的重用率

泛型类:定义类时使用泛型

1)格式:< >

class类名<字母列表>{

修饰符字母属性;

修饰符构造器(字母){

}

修饰符返回类型方法(字母){

}

}

字母:

T Type表示类型

K V分别代表键值中的key Value

E 代表Element

?表示不确定的类型

2)使用:指定具体类型

1、编译时会进行类型检查

2、获取数据时不需要强制类型转换

注意:

1、泛型只能使用引用类型,不能基本类型

2、泛型声明时字母不能使用静态属性、静态方法上

泛型接口:定义接口时使用泛型

1、格式:< >

Interface接口名<字母列表>{

修饰符返回类型方法(字母);

}

2、因为不能使用在静态属性上,更不能用在全局常量上

3、接口中,泛型字母只能使用在方法中,不能使用在全局常量中

泛型方法:

定义使用:<字母>

修饰符<字母> 返回类型方法名(字母){

}

要定义泛型方法,只需将于泛型参数列表置返回值前。

泛型方法< > 返回类型前面

只能访问对象的信息,不能修改信息

注意:泛型还可以定义在方法中,是否拥有泛型方法,与其所在的类是否泛型没有关系。

33、Hashtable与HashMap的区别

//””空表示类的相对路径bin文件

34、同步控制与只读控制:

35、Collection扩展之guava

36、快捷键

空构造器快捷键:alt+/

有参构造器快捷键:alt+shift+s o

get与set方法快捷键:alt+shift+s r tab 回车shift+tab 回车查看方法快捷键:Ctrl+O

导入包ctrl+shift+o

37、Collection扩展之commons

38、容器的总结

39、IO原理与概念

40、IO字节流

41、IO字符流

42、IO处理流

43、IO其他流

44、IO总结

三、重点

45、多线程概念:

创建:

状态:

同步:

生产者消费者模式:

任务调度:

总结:

同步:是多线程对同一份资源共同访问,造成资源的不安全性,为了保证这个资源的准确和安全,我们需要加入同步。(面试题)

46、net网络

概念:

地址及端口:

URL:

UDP通信:

Socket通信:

JDBC——java 数据库连接

异常:

IOException、UnsupportedEncodingException、FileNotFoundException ClassNotFoundException

EOFException——没有读取到相关的内容end of file NotSerializableException

InterruptedException

BindException绑定

UnknownHostException找不到主机

NullPointException空指针SocketException

相关主题
文本预览
相关文档 最新文档