1.Java学习过程笔记(传播智客毕向东)

目录

1.Helloworld. 1

Java. 1

变量... 2

关键字(所有字母为小写)... 2

标识符... 2

IF语句... 3

99乘法表... 3

99主函数带入参数... 3

内存结构,5个内存空间... 3

2.函数... 4

函数的格式... 4

3.重载(add(4,5),add(4,5,6)或者99乘法表88)... 5

4数组... 6

原理 int[] x = new int[3]6

示例... 7

遍历,length. 7

获取最大值,ArrayMax. 8

排序... 8

冒泡排序bub. 8

数组的查找(折半查找)... 9

8十进制转二进制... 10

5面向对象... 11

1.面向对象概述... 11

3.类与对象的关系... 11

4.类主函数,成员变量和局部变量... 12

5.匿名对象... 13

代码分析,主函数,内存... 13

匿名对象作实际参数传输... 14

6.封装Encapsulation. 15

7.priavte. 15

8.构造函数, 与类同名,可重载... 16

9.构造代码块,{初始化}18

10this关键字... 18

11this关键字的应用,该类... 20

12this关键字在构造函数间调用,this(name),Person(name)20

6面向对象... 21

1static关键字静态... 21

方法区/共享区,类中的方法,类中的共享数据... 21

2.main,主函数是静态的... 24

静态的应用... 25

帮助文档的使用... 25

静态代码块... 26

对象的初始化... 26

单例设计模式... 27

接口interface,特殊抽象类... 29

接口举例... 30

8面向对象... 30

多态,事物存在的多种体现形态... 30

8.Object类上帝类equals. 30

9.toString()31

9面向对象... 32

1.内部类(内置类、嵌套类)... 32

1.为什么内部类可以访问外部类内容... 33

4.匿名内部类... 34

4.匿名内部类调用父类方法... 35

4.匿名内部类的... 36

5.Java的异常机制... 38

6.异常处理机制... 39

7.异常处理... 40

继承... 40

聚集... 40

子父类... 40

抽象对象,抽象类... 41

模板方法TemplateDemo. 42

构造函数,名称随类名走... 42

final43

10面向对象... 43

7.包Package. 43

包名要全称... 43

javac –d 目录... 43

放在其它目录... 44

8.包与包之间的访问... 44

9. import导入... 45

import pack.haha.hehe.heihei.*;46

import导入的是包中的类。... 46

Eclipse. 47

jar包... 47

18其他对象... 47

System.. 47

11多线程... 48

1.多线程... 49

2.创建线程-继承Thread类... 49

3.run和start的特点,start才可以开启线程... 50

4多线程练习... 51

5.线程运行状态4:被创建,运行、冻结(临时状态/阻塞)、消亡     51

6.获取线程对象及名称... 52

7.卖票例子... 53

8.实现Runnable接口... 54

8. 实现方式和继承方式有什么区别?... 56

9.多线程的安全问题... 57

冻结状态sleep,模拟这个卧倒... 57

覆盖接口是不能抛异常的... 58

解决,同步代码块... 58

10同步代码块,同步锁,锁旗标,火车卫生间。。。... 58

11.多线程,同步函数... 59

12.同步函数的锁是this. 60

13静态同步函数的锁是Class对象(getClass获取实例)... 63

静态同步:类名.class. 63

14单例设计模式-懒汉式... 64

15.死锁... 65

12多线程... 66

1.线程通信,一堆煤,卡车进,卡车出,BUG.. 66

2.解决安全问题... 68

3.等待唤醒机制... 69

4.代码优化... 69

5生产者和消费者,问题... 71

5.生产者消费者,解决问题... 72

6生产者消费者JDK5.0,lock. 73

7.停止线程... 77

8守护线程setDaemon. 79

9多线程join方法... 80

10优先级&yield. 80

yield. 81

10开发写线程... 82

22GUI(图形用户界面)Graphical User Interface. 83

布局... 83

3图形化界面Frame. 84

4事件监听机制... 85

5.窗体事件... 85

Action事件... 87

鼠标事件(共性事件)... 88

键盘事件,确定事件源,确定事件,确定要操作谁!... 89

TextS简单界面... 89

错误处理... 91

菜单MyMenuDemo. 92

窗口fileDialog. 92

异常处理... 93

不要打开dos命令行方式... 93

打jar包... 93

jar -cvfm my.jar 1.txt mymenu. 94

双击安装版的jdk才能运行... 94

自己配置... 94

exe4j转换下... 94

13String(应用程序接口API类)... 94

1.String概述... 95

2.String获取和判断... 95

3.String转换... 98

4.字符串替换... 100

5.转换,去除空格,比较... 100

6字符串练习... 101

查找kk. 102

10StringBuffer. 102

13String(应用程序接口API类)... 105

字符串替换... 105

StringBuffer. 106

14对象封装新特性... 108

14集合框架... 108

共性方法... 109

4.迭代器... 110

讲完Collection,讲List集合,主要是角标... 111

5ListIterator. 112

6.List集合对象特点... 112

7.LinkedList112

10ArrayList练习... 112

11ArrayList练习多态编译失败... 115

12HashSet(hashCode和equals)... 115

HashSet查找... 117

13hashset判断和删除的依据... 118

15集合框架TreeSet119

2TreeSet存储自定义对象... 119

3二叉树... 120

4.comparator方式排序... 121

6泛型通过<>泛型由来... 121

定义容器的时候,就定义了类型... 122

泛型就加个<>. 122

8.泛型类... 123

9泛型定义在方法上... 124

10静态方法泛型... 125

11泛型定义在接口上... 126

12泛型的高级应用,限定... 126

13不用泛型太麻烦... 127

16.Map. 127

接口共性方法看完,看小弟... 128

Hashtable. 128

3.Map共性方法... 128

4.Key-Set130

5.entrySet130

6.Map练习... 131

8TreeMap练习... 131

17Collections. 131

18其他对象... 132

System.. 132

14集合框架... 132

迭代器... 133

List集合,主要是角标... 133

ArrayList134

HashSet137

HashSet查找... 138

TreeSet140

泛型通过<>. 140

泛型类... 141

泛型定义在接口上... 142

Map. 143

17集合... 143

16Arrays. 143

17集合转成数组... 144

18增强for循环... 145

19可变参数。。。... 145

20静态导入... 145

18其他对象... 146

System.. 146

2.Runtime对象... 146

5其他对象Math-Random.. 147

18IO流(Input、Output)... 147

FileWriterDemo新建写入文件... 147

IO异常处理... 148

原有数据上续写... 149

IO流读取... 149

IO流文本文件读取联系... 150

拷贝文件... 151

拷贝图片,媒体文件,字节流... 151

拷贝MP3,字节流... 152

properties,util包... 152

打印流PrintWrite和PrintStream.. 153

序列流SequenceInputStream.. 153

管道流PipeInputStream和PipeOutputStream.. 153

RandomAccessFile. 155

23网络编程... 155

2301网络编程概述... 155

24网络编程... 156

Socket156

UDP传输,发送端和接收端... 156

聊天对话... 156

图形化聊天界面... 157

TCP传输,客户端和服务端Socket和ServerSocket158

14TCP复制文件... 160

2401TCP上传图片... 160

2402客户端并发上传图片... 161

代码解析... 161

TCP变成客户端小写,返回大写... 162

浏览器客户端... 163

2405tomcat服务器... 164

2406服务端的请求信息... 164

自定义客户端... 165

自己封装URL,否则切割split很麻烦... 166

网络编程... 169

域名解析... 169

25正则表达式... 169

网页爬虫,蜘蛛... 169

 

1.Helloworld

Java代码都是通过类来执行的,注意编码Java要用笔记本打开,或者另存为ANSI格式

新建一个java文件,就是一个源文件,然后将它变成执行文件(就是翻译成计算机/虚拟机,可执行的文件)

javc和java,注意之前环境变量已配置,报错注意class是不是写错了。

(1)java要注意大小写

(2)如果想在其它地方运行该Demo,可以自己新定义一个环境变量

(3)所有函数都是从主函数开始执行的。

Java

注释//或/*注释*/

变量

Java是强类型语言,运算都是在内存中进行的,需要开辟空间

数据类型:基本数据类型、引用数据类型

byte是字节1个8位-128到127,-2的7次方

float占了4个8位,double占了8个8位

关键字(所有字母为小写)

标识符

Java严格区分大小写

1.数字不可以开头

2.不可以使用关键字

IF语句

99乘法表

99主函数带入参数

内存结构,5个内存空间

数组,同一种类型数据的集合,其实数组 一个容器。

数组的容器能够自动给数组中的元素编号,从0号开始,方便操作这些元素

(1)栈,数据使用完毕会自动释放。

针对int x=3,主函数在运行的时候,会在栈里面开辟一个空间,空间里就有一个变量x=3

如果调用了show函数,就会开辟一个show内存区域的空间

(2)堆,默认有值,根据字符类型,java会回收堆中的垃圾

int[] x=newint[3]

int[] x局部变量在栈里面

而new出来的东西都是实体,在堆里面,new int[]就在堆里面开辟一个空间,这个空间分了3个格子[0][1][2]。

内存里都是地址池,用地址标识数据存放的位置。

2.函数

函数:就是定义在类中具有特定功能的一段独立小程序

函数也称为方法。

相同的地方抽取出来,封装成独立的功能。

函数的格式

修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,….)

{

     执行语句;

     return 返回值;

}

返回值类型:函数运行后的结果的数据类型int、double。

参数类型:是形式参数的数据类型

形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数

实际参数:传递给形式参数的具体数值。

return:用于结束函数。

返回值:该值返回给调用者。

(1)定义好一个功能

(2)函数只有被调用才能执行

(3)调用函数,返回值类型为int

定义函数可以将代码功能进行封装,便于该功能的复用

函数中只能调用函数,不能在函数内部定义函数

(4)void没有具体返回值,当函数返回值类型是void时,return可以不写,系统默认会加上

3.重载(add(4,5),add(4,5,6)或者99乘法表88)

在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可

什么时候用重载:当定义功能相同,但参与运算的未知内容不同

那么就定义一个函数名称以表示起功能,方便阅读,而通过参数列表的不同来区分多个同名函数

4数组

数组:同一种类型数据的集合,其实数据就是个容器

好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。

格式1:

元素类型[] 数组名 = new 元素类型[元素个数或数组长度]

示例:int[] arr = newint[5]

格式2:

元素类型[] 数组名 = new 元素类型[]{元素,元素,…..}

int[] arr = newint[]{3,4,5,6,2}

int[] arr ={3,4,5,7,1}

原理 int[] x = new int[3]

凡是局部变量,都在栈内存。(定义在方法中变量,定义方法参数中的变量,定义在for循环中的变量)

凡是new出来的实体都在堆里面(包括数组和对象)

(1)int[] x在栈内存中开辟一个空间

(2)new就在堆中产生一个空间int[3],产生三个格子,每个格子都有个编号:0角标位

(3)堆和栈中的x怎么联系?堆内存中每一个实体都有一个存放位置(地址,内存地址池),这个地址都有一个起始位置,这个数组在堆内存中的首地址,用它来表示堆内存中的地址,就赋给栈中x,x就指向了堆中的数组(或者引用了堆中的数组)

(4)堆中数组都有默认初始值,根据类型定(int0,double0.0)

(5)x取值变了只是指向变了,堆中数组没有变

示例

运行的时候,才会在内存产生空间。//ArrayIndexOutofBoundsException:3:操作数组时,访问到了数组中不存在的角标。

(2)NullPointerException:空指针异常

arr = null;

System.out.println(arr[1]);

遍历,length

(1)常见错误

@右边就是数组的存放地址,这是Hash值16进制的

获取最大值,ArrayMax

排序

0角标和其它排序,最小的放在0角标

然后是1角标和剩下的排序

冒泡排序bub

相邻的两个元素进行比较,如果符合条件换位

数组的查找(折半查找)

(1)一般查找方式

(2)折半查找

(2)第二种折半查找

8十进制转二进制

不想011

9查表法

5面向对象

(1)将执行者,转变为指挥者

(2)实际例子用,到哪就用什么,会议室:会议室封装了public开门,public开会,private首席,使用function会议室这个功能就ok了。

1.面向对象概述

(1)面向对象是相对面向过程而言的

面向对象和面向过程都是一种思想

(2)面向过程:强调的是功能行为

把大象放进冰箱:打开冰箱,放进大象,关闭冰箱

这个打开动作,关闭动作都是面向过程的。

(3)面向对象:将功能封

你可能感兴趣的:(1.Java基础知识)