javaoraclehtml学习日志
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
javaoraclehtml学习日志
1、开始---》运行---》输入cmd
切换盘符:d:
列出当前名目下的文件和文件夹dir.
切换名目:cd 名目名称(jdk*)。
(*会自动匹配后面的字母)
返回上级名目:cd..
一次性返回个名目:cd\.
创建文件夹:md cui.
删除文件夹:rd.
创建文件:echo cuixiaojie>1.tet..
删除文件:del.
清屏:cls.
退出:exit.
Jvm 虚拟机相当于电脑《Jre 相当于操作系统《Jdk
2、Path 环境变量
我的电脑——》属性
D:\Program Files (x86)\Java\jdk1.6.0_13\bin;E:\Program Files (x86)\JavaFX\javafx-sdk1.1\bin;E:\Program Files (x86)\JavaFX\javafx-sdk1.1\emulator\bin;C:\Program Files (x86)\AMD APP\bin\x86_64;C:\Program Files (x86)\AMD APP\bin\x86;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows
Live;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT %\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files\Lenovo\Bluetooth Software\;C:\Program Files\Lenovo\Bluetooth Software\syswow64;C:\Program Files\Broadcom\WHL\;C:\Program Files\Broadcom\WHL\syswow64;C:\Program Files\Broadcom\WHL\SysWow64\;C:\Program Files\Broadcom\WHL\SysWow64\syswow64;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files (x86)\Autodesk\Backburner\;C:\Program Files (x86)\Common Files\Autodesk Shared\;C:\Program Files (x86)\Common Files\Ulead Systems\MPEG;D:\Program Files\QTSystem\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files (x86)\Microsoft \ Web Pages\v1.0\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\
3、动态引用路径的方法:%java-home%(那个写在path的变量值中
并替换jdk1.6.0_13文件夹前面的)然后新建一个变量名java-home,变量值是jdk1.6.0_13文件夹前面的
java-home=d:\java (必须执行那个jdk1.6.0_13文件夹因此假如有一天那个文件夹位置移动了,新建了动态引用路径的话就能够只改变新建路径上的变量值)
4、同3中一样定义classpath在使用cmd时就能够直截了当对已编译过的类进行执行。
Corejava day 2
Java中的注释方式:
1、单行注释:用//来注释
2、多行注释:/*开头*/终止
3、文档注释:以/**开始,以*/终止,作用范畴包含在/** */
Java特有的的注释方法,能够生成文档
生成文档的方法:调用命令
例子:D:\ (区别D:\>) java程序练习\01别人作业>javadoc -d test Demo.java (test是一个文件夹名他前面若没有名目则会生成在当前名目)
4、标示符:java中包,类,方法,变量,参数的名称。
5、标示符规则:1、有大小写字母、数字、下划线、$符号
2、数字不能够显现在开头
4、中文也能够,但不建议使用。
6、定义标示符的规范:1、类名接口名:MyHelloWorld
2、方法和变量名:myHelloWorld
3、包名:myhelloworld
7、goto 在java中没有专门含义,然而被作为保留字。
(是c语言中的)
8、位(bit)<<字节(byte)八进制。
9、八进制:开头加0表示八进制;十六进制:开头加0x;
10、-6转换为二进制确实是:6的二进制取反加1。
11、数据类型:(1、差不多数据类型2、引用数据类型)
1、差不多数据类型:整形:
byte 8位-2(7)—2(7)-1
Short(短整型) 16位-2(15)—2(15)-1
int(短整型) 32位-2(31)—2(31)-1 (默认类型)
long(短整型) 64位8字节-2(63)—2(63)-1
字符型char(2字节)
布尔型boolean (1位):
true
false(默认值)
浮点型:
float (7位小数四个字节)
Double(15八个字节)(默认类型)
Byte b=(byte)-129 输出b为127
12、常量:整数常量、小数常量、boolean常量、字符常量、字符串常量(双引号里所包含的内容)、Null常量。
13、变量:char ch=’c’(单引号里面必须只能是一个字母) float f=1.12f (后面必须加f)
14、类型转换:1、自动转换(小转大)short a=4;int a=4;输出a
2、强制转换(大转小)例1、int a=4;short a=(short)a;输出a
例2、char c=’a’;int h =(int)c; (颜色相同的必须一致) 15、Sring str=”bjnsjnfks”;当需要在字符串中输出一个专门字符的时候,如”“等这种时需要用到转译字符。
转译符为\
例如:Sring str=”bjnsj\”nfks”;现在输出的确实是bjnsj”nfks
常用转译字符\r 回车(执行的时候,会将光标移动到这一行的开始,假如在前面有字符串的话,/r会将后面输入的覆盖前面的。
)\n (换行)\t(制表符)=tab \r\n 换行
16、运算符:+(加法运算、拼接、表示正数);-(减法运算、表示负数)
17、Int a=10;int b=3;int c=10%3; 输出c。
C的值的正负取决于被模数(在本例中是10)的正负。
18、Short c=2; short d=c+23;输出d; 现在会显现编译错误,因为23默认的会是int 型。
19、关系运算符:boolean
20、逻辑运算符:&只有两边差不多上true时返回值才是true。
|只要显现true结果确实是true。
&&只要前面值显现false,则终止(有利于提高运算速度)。
||只要前面值显现true,则终止(有利于提高运算速度)。
^运算符里面值相同时位false,不同时为true。
21、位运算符:用来运算二进制数的运算符
& 3&6 =2
0000 0011 (3)
0000 0110 (6)
0000 0010 (2)
其他运算符使用方法也一样。
(一个式子异或两次等于其本身)
左移<< 3<<1 =6 0000 0011(3)移动后0000 0110(6)=3*2(1)
3<<2 =12 0000 0011(3)移动后0000 1100(12)=3*2(2)
3<<3 =24 0000 0011(3)移动后0001 1000(24)=3*2(3)右移>> 与上面相反。
右移几位除以2的几次幂后的商(小数部分舍去)
22、int a=2; int b=a++;现在b=2;a=3;
23、Short d=4; short a=d+5;中输出a 和Short d=4; d+=5;(也是先进性加法运算后赋值)两者不完全等价。
前者会出错,后者可不能。
(复合运算的好处)
24、唯独的三目运算:(表达式1)?(表达式2):(表达式3)
表达式1一定是个boolean值,当表达式1位true时执行表达式2
表达式1一当表达式1为false时执行表达式3(表达式2和3只能执行一个)//表达式是运算符、操作数以及方法调用的序列,用来说明
25、双目运算符,左面操作元是一个对象,右面是一个类。
当左面的对象是右面的类创建的对象时,该运算符的运算结果是true,否则为false。
26、Final能够保证在程序中的某个变量不变如final pi=3.14;
Corejava day 3
27、结合性:当优先级相同时,判定运算符顺序时,需要依照结合性。
例子:int d=a<b?a>b?b--:c--; int d=a<b?(a>b?b--:c--); 注意是:先用后自减,因此执行到b--或者c--时。
28、程序流程操纵:
29、Switch()括号里面是int类型,若不是则需要判定的东西只能是:byte short
Int char。
30、循环结构:while(条件表达式){} //a++或a-- 单独存在时与--a,++a没区别。
While先判定后执行
Do{
}while(条件表达式);//别忘了写分号。
先执行后判定。
For(初始部分;循环条件;迭代部分){循环体}
31、break用在分支语句和循环语句中(直截了当退出循环语句)。
Continue只作用于循环语句(舍弃这次循环执行下一次循环,并没有退出循环语句)。
32、循环嵌套:for和for;外层循环操纵行数,内层循环操纵内容。
33、数组
34、一维数组:数据类型[] 数组名(表示符规则)=new 数据类型[5]
数据类型数组名[](表示符规则)=new 数据类型[5](不建议用)
变量的是在栈内存中储备的。
超出作用域后自动销毁。
引用类型的名称。
堆内存:new
垃圾回收机制。
下标。
下标是从0开始的
使用下标 arr[0] 确实是访问了放在第一个格子的数值。
初始化:int[] arr = new int[3];//长度为3的数组。
arr[0]= 1;
arr[1] = 30;
arr[2] = 40;
int[] arr1 = new int[]{1,3,5,7}; int[] arr2 = {1,3,5,7}; Exception in thread "main" ng.NullPointat ArrayTest.main(ArrayTest.java:7) 空指针专门。
Exception in thread"main"ng.ArrayIndexOutOfBoundsException: 数组下标越界。
35、利用数组:输出八中数据类型的初始化值
36、二维数组: 数据类型[] []数组名(表示符规则)=new 数据类型 [2][3]
37、
一位数组的数量
决定一位数组的长度
38、数据类型[] []数组名(表示符规则)=new 数据类型 [][] {{1,2,3},{4,5,6} }
//在java 中会自动猎取数组的长度,黄色部分能够去掉。
39、用for for 嵌套循环输出二维数组时,数组名.length (外层循环条件) 数组名
[i].length (内层循环条件)
40、A[2][3]数组 A[0]指的是A[0][0]A[0][1]A[0][2]首地址 A[1]指的是A[1][0]A[1][1]A[1][2]首地址
Int[][] arr = new int[2][3];
Arr[0][0]
Int arr[][] = new int[2][3]
Int[] arr[] = new int[2][3];
42、int[]x,y[];
x是一维数组;
y是二维数组;
y[]=x;
y[][]=x[];
40、String既不在栈内存,也不在堆内存中。
存在字符串常量池。
String str=”absss”
String str=new String(“absss”) //那个在堆内存中,使用了new的就在堆中。
假如String str1=”absss”;String str2=”absss”;输出(str1=str2);是正确的。
假如String str1=new String(“absss”) ;String str2=new String(“absss”) 输出(str1=str2);是错误的。
因为后者两个地址之间的比较。
Corejava day 4
41、猎取数组中的最大值、最小值。
Int[]arr={1,2,3,4,5}
选择排序:1、需要嵌套循环2、外层循环的次数比数组长度小一3、内层循环起始值是外层循环加一。
冒泡排序:相邻的两个比较,大或者小后换位置。
42、二分法:
Corejava day 5
43、面向对象是一种思想。
是相关于面向过程而言的。
是基于面向过程的。
从执行者变成指挥者,我们只要定义一个具有该功能的对象拿来使用就能够了。
44、类:修饰符(pubilc paivate...)class类名{
成员变量
成员方法(函数)
}
45、一个源文件只能有一个public的类
46、成员变量:是整个类中都能够访问
47、局部变量:定义在方法里的。
48、方法(函数):public static void main (String[] args)括号里为形参
修饰符(pubilc paivate...)返回类型方法名(数据类型名称...){
Static也是修饰符执行语句
return;
}
49、当程序执行到return就可不能执行return后面的语句。
若返回值为void时候return能够省略。
50、方法功能:分析你的功能需不需要返回值。
分析功能需不需要未知变量。
需要参数。
51、方法特点:定义函数能够将代码封装。
提高复用性。
只有被调用才会执行。
52、函数里面不能定义函数。
53、定义一个对象:类名名称=new 类名()
54、利用类的方法:输出八中数据类型的初始化值
55、对象名称.属性名;eg:崔小杰.name;
56、对象名称.方法();eg:崔小杰.speak();(指的是对象调用了该方法,目的是调用方法)假如方法是静态的方法,也能够用类名.方法名();(目的是传参数)
57、封装(属性封装、功能封装):
属性封装:把成员变量私有化,通过get和set的方法来实现。
eg:getName{ }
功能封装:
58、构造方法:特点:1、没有返回类型2、与类名相同3、不能在构造方法中写return
59、系统会默认一个无参的构造函数,当写一个有参数的构造函数时会将其默认的那个覆盖掉。
60、Static静态随着类的加载而加载的。
静态的优于对象的。
成为独立的静态代码块。
61、静态不能够访问非静态,非静态的能够访问静态的。
62、静态方法中不能够使用this和super关键字。
63、假如方法声明的局部变量与封装该方法的类所声明的一个变量同名,则在该作用域内,局部变量屏蔽类作用域变量,若要实现在该方法中被屏蔽掉的实例变量,在其名称前加上(this.)
64、
65、//单例模式:把构造方法私有化。
《大话设计模式》
Corejava day 6
66、继承:使用extends来继承。
好处:提高了代码的复用性,使得类和类建立了联系。
67、Class 亲小孩extends老子{ } 继承的例子。
68、昨天的八大数据类型初值老师用的是两个类才可不能报错static
69、若亲小孩和老子有相同的属性时默认的是亲小孩的。
若要继承老子的需要用到super关键字,用法和this一样
70、不能为了某个单独的功能去继承。
71、当多个类有共同的代码,将相同的属性和代码提炼出来,建立一个新的类。
然后让多个类来继承那个类。
72、Java中也不支持多继承。
然而java中保留了那个机制。
是用来实现接口来实现多继承。
73、支持多层继承。
74、重写:子类重写父类的方法时,必须和父类完全相同包括参数。
(因此覆盖掉的不包括私有的)。
重写时因此子类里面的也必须大于等于父类。
75、主方法里面不能用this.
76、写子类的时候在堆内存中开创两个空间,一个放父类里的东西,一个放自己的。
77、Super(能够写构造函数的参数)this(能够写构造函数的参数)两者都必须放在构造函数的第一行。
因此在构造函数中只能存在一个。
78、子类的实例化过程:1、子类中所有的构造方法都会访问父类中空参数的构造方法。
2、子类会具备父类中的数据,因此要先明确父类是如何对这些数据初始化的。
79、Final :被final修饰的类、方法、变量不能被继承、重写、更换。
内部类能访问被final 修饰的局部变量。
80、总结:当亲小孩和父亲两个类中都有某个属性时。
亲小孩要用父亲的那个属性时前面加上super.,默认的是自己的。
81、构造函数在new是就会自动执行。
82、编程中遇到的问题:继承的练习中对差不多初始化了的属性又用了一个函数,对那个函数进行传参,重新定义初始化过的属性。
那个是没必要的。
Corejava day 7
83、超类的方法里面的内容没有实际意义时,将该方法定义为抽象方法,所在类也就写成为抽象类。
不需要函数体,只要声明就好了eg: public abstract void eat();类的写法:abstract class Test{} 注意:abstract写在返回类型前面。
84、抽象类不能用new创建对象。
85、想要使用抽象类的方法,就必须由子类继承,子类覆盖父类中的抽象方法。
86、子类一旦继承了抽象类,就必须覆盖其所有抽象方法,假如子类只覆盖了一部分,那么子类也是个抽象类。
87、抽象类中能够不包括抽象方法。
88、接口:初步能够认为是专门的抽象类,只能定义抽象方法(public abstract)和常量(public final)而且只能是public的。
因此public是能够省略的。
类用来继承extends;接口用来实现implements。
89、接口不能new对象,因为接口包含的是抽象方法。
90、想要使用接口中的方法就要用子类去实现。
子类必须全部覆盖接口中的方法,如若未覆盖则子类需要时抽象类。
91、之因此接口能多实现,是因为接口里面的函数是没有函数体的因此不怕多个继承时导致的不明白继承自哪个父类的问题。
92、多肽:猫a=new 猫();也能够写为:动物b=new 猫();假如父类中有fun方法子类也有,b.fun()用的是子类的,假如子类中没有则是调用的父类的;假如父类中没有fun方法,则b.fun()是错误的。
93、父类的引用指向子类的对象。
父类能够接收子类对象。
94、当某个类只有一个对象时能够不那样创建对象。
能够写为:new Cat()。
那个就相当于创建了的对象。
写法:new Cat().eat();不仅如此,而且也能够作为参数进行传递。
95、Instanceof判定某个对象是否属于某个某个类。
写法:if(a instanceof Dog){........} if(a instanceof Cat){........}
96、多肽中的成员函数:编译时看等号左边。
执行时看等号右边。
97、多肽中的静态成员函数都看左边。
98、耦合:程序功能与功能之间的联系。
因此好的程序要低耦合。
Corejava day 8
99、内部类:当我们描述某个事物的时候该事物还存在其他内部事物,现在我们就需要用到内部类(类的嵌套)。
100、内部类的访问规则:外部类访问内部类的时候需要建立内部类的对象(那个对象就建立在外部类的函数体内)或者如此:Outer.Inner in=new Outer().new Inner();内部类能够直截了当访问外部类的成员,即使那个成员是私有的也能够访问。
101、内部类:当成员变量同名的时候用Outer.this.num和this.num来区分。
102、方法内部类:方法内部类使用时对象要创建在内所在的方法的内部且写在方法内部类后面。
103、想要访问方法内部的局部变量。
变量必须被final修饰。
104、匿名内部类:例如new Test(){ }.function_1();//
105、静态内部类:
106、静态内部类的访问规则:Outer.Inner in=new Outer. Inner();
107、Outer.Inner.function_1();
108、专门:也是用对象的形式表现出来的。
Error:程序本身无法解决。
Exception :专门Throwable
109、当专门没有处理的时候。
一旦显现专门,jvm就会默认终止程序。
110、涉及到专门的关键字:try catch finally throw throws
111、处理专门的方式:try{ 需要尝试执行的代码}catch(Exception e ){捕捉到的专
门}finally{ 始终会执行的专门}
112、Throw是用在方法内,throws使用在方法上,表示声明一个专门。
113、包:java中包是对类文件进行分类治理的。
命名规则,全部小写,sun公司提倡用公司域名的倒写形式来命名包。
Com.sram 也是java中封装的一种表达,为java提供了多层空间命名。
命名包的关键字package 。
Javac -d. 路径类名.java 实体包com.sram.entity
接口包com.sram.dao
实现包com.sram.dao.impl 放的具体的功能函数
工具包com.sram.util
视图包com.sram.view
Day09
114、java中会默认导入ng
115、四中权限:public protected default private
同一个类中:ok ok ok ok
同一个包中:ok ok ok
子类:ok ok
不同包中:ok //同一个包中通常为相同类型的类。
116、常用字符串的操作方法:charAt() 返回指定下标处的值。
Length()获得String的长度。
Concat()endsWith() index() equals() sqlit() replace(char old, char new)
117、StringBuffer类线程安全(容器):
StringBuffer sb=new StringBuffer();
常用方法:append()将指定内容追加到字符串后面
charAt() 返回指定下标处的值
Delete(int b ,int e)删除给定下标的字符串内容
deletecharAt(int index)删除指定下标处的char值
Insert() 将指定内容插入到字符串的指定位置上
Indexof() 返回指定字符串第一次显现的位置
length() 获得String的长度
Reverse( ) 将字符串倒过来排列
subsString(int b,int e) 依照给定的下标截取字符串
replace(int b int e ,String str) 将指定字符串替换到指定位置上
118、Stringbuilder类线程不安全比StringBuffer更快
119、差不多类型封装类
int Integer
Integer i=-127;
Integer i1=-127;
当i和i1的值在byte的范畴内时。
I=i1是true,反之为false。
parseInt(String s)将字符串强制转换为int类型。
short Short
long Long
byte Byte
float Float
boolean Boolean
double Double
char Character
Day10
120、集合框架:
存放批量对象的容器。
为了方便我们操作的批量对象。
数组和集合:
数组是固定长度的。
能够存放差不多数据类型,也能够存放对象。
集合是可变长度的。
只能存放对象。
能够储备不同类型的对象。
121、
122、collection接口中定义的方法,完成了对集合元素的增删
123、List(接口):存放的元素是有序的,能够重复。
Arraylist 底层的数据结构是数组结构。
增删改查
特点:查找速度快,插入速度慢。
显现频率最大
Linkedlist 底层的数据结构是链表结构
特点:插入元素快,查找速度偏慢。
Vector 底层的数据结构是数组结构
124、迭代器:用来遍历集合的。
是一个接口Iterato r,具体写法:Iterator
it=list.iterator();
125、加强版for循环:for(数据类型变量名:迭代的对象)
eg:for(object o: list){ String s=(String)o;}
126、set(接口):(取出数据的唯独方法确实是通过迭代器,而list能够通过for循环)HashSet:底层的数据结构是哈希表
判定元素是否重复的方法:
第一比较hashcode,假如相同,比较equals返回值为
true,则元素重复。
后面的覆盖前面的。
我们就能改变
比较的方式
TreeSet底层的数据结构是二叉树
放入TreeSet的元素是能够按照某种规则排序,需要实现Compare接口,重写接口中Compare方法,只要放入TreeSet的元素就必须具有排序
性,假如没有就强制它具有排序性。
Day11
127、map 一对一的关系。
Hashtable 底层数据结构是哈希表线程安全不能使用null值和null键
Hashmap 底层数据结构是哈希表线程不安全能使用null值和null键
Treemap 底层数据结构是二叉树能够依照集合中的键值
128、泛型
Java JDK1.5版本显现的。
用于解决安全问题是一种安全机制,将强制转换从运行时期转移到编译时期,让安全问题减少,幸免了强制转换的苦恼。
格式:在类名后面加尖括号HashMap <String> map=new HashMap<String >( )
自定义泛型类
用法:在类名后加<T>来定义泛型。
方法:在返回类型前面加<T>来定义泛型。
注意:静态方法不能引用类的泛型能够在返回类型前面加<T>。
129、
<? extends Student >表示所有继承了student的类都能够。
student表示上限,?表示占位符。
<? super Student >表示所有继承了student的类都能够。
student表示下限,?表示占位符。
130、可变参数
写法:数据类型...变量名eg: public void fun(String...str) { }
假如fun有两中数据类型的参数,则只能有一种数据类型的参数能够为可变的(会无限解析参数),且要把可变参数放在最后eg: public void fun(int i, String...str) { } t.fun(2,”wwd”,”dfasf ”,”afsf”);
131、反射机制
在运行状态中,java的反射机制能够对任意一个类.Class文件猎取那个类的所有属性和方法。
并能够调用它的任意属性和方法。
把这种动态猎取信息以及动态调用的对象的
功能称之为java的反射机制。
Day12
132、猎取构造方法:
是通过调用class类中的getConstructor(公有的)getDeclareConstructor(任何权限)来猎取。
猎取某个构造方法是通过构造方法参数类型的不同来判定。
133、jDK 1.5显现的新特性为了简化代码
枚举能够明白得为是一个具有自定义对象个数的专门类,使用关键字enum来定义枚举类。
枚举一旦被定义就会默认继承Enum类,枚举中的对象具有具有那个类中的方法。
枚举类中的枚举名称需要大写。
在枚举中能够定义构造方法,但构造方法的权限小于默认权限。
枚举能够实现接口。
Day13
134、GUI 图形用户界面
Java一开始提供了AWT(抽象窗口工具包)需要调用本地系统方法实现功能,属于重量级空间。
Swing是在AWT的基础上建立的一套图形化界面系统。
提供了更多的组件,完全有java 实现。
增强了移植性,属于轻量级空间。
135、FlowLayout流式布局治理器从左到右依次排列,放不下换行 Panel 的默认布局
BorderLayout 边界布局东、西、南、北、中frame的默认布局
绝对布局:定义组件的坐标的位置,将frame.setlayout(null);
136、下拉列表jcomobox
137、窗口监听窗口识别实现了窗口监听
138、Swing和awt前者不用设置叉叉符号就能够自行关闭。
139、frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);要写上,前者不写是能够关闭窗口,但不能关闭程序,程
序一直在运行着的
Day14
139、IO流IO流是用来处理设备之间的数据传输,java关于数据的操作确实是通过IO流。
提供了对应的对象
140、依照传输的数据不同能够分为字节流和字符流;
字节流
InputStream 字节输入流
outputStream 字节输出流
是字节的基类byte
字符流
Readr 字符输入流
Writer 字符输出流
是字符的基类char
所有的输入流都有read方法,为了猎取数据,所有的输出流都有write方法,为了记录数据
141、依照流向不同能够分为输入、输出流。
142、缓冲字符流
字符流的缓冲区bufferedReader bufferedWriter
为了提高其他流的读取速度。
在缓冲区出来之前必须有流对象。
143、装饰设计模式
想对已有功能进行增强时,能够定义类,将已有对象传入。
144、字节流byte(不光能操作文本,还能操作电影)
文件字节流
145、总结:
字符流和字节流
当你操作的对象是纯文本时,用字符流
当你操作的对象是不是纯文本时,用字节流
输入输出流
inputStream filereader 到操纵台上了
OutputStream fileWrite 到指定位置
Day 15
146、文件夹
将文件文件夹封装成对象,file流。
对文件和文件夹的操做更加方便
能够作为参数传递给流的构造函数。
Window下c:\ linux 下c:/
147、递归:函数调用本身的称之为递归。
148、打印流printstream 字节打印流
Printwrite 字符打印流
149、对象流为了能够传输对象,就有了对象流。
ObjectInputStream
ObjectOutputStream
150、RandomAccessFile
r: 文件存在
151、字符编码:
Day 16
152、线程:存在于进程之中,线程是进程的独立操纵单元。
进程:正在执行的程序。
每一个进程都有一个顺序,每个进程中都有独立的操纵单元,一个进程至少有一个线程。
153、JVM启动的时候会有一个进程java.exe ,该进程中至少有一个线程负责java程序的运行。
而且那个线程运行的代码存在于主方法中。
该线程称之为主线程。
154、第一种创建线程的方法:
1、继承thread类。
2、重写thread类中的run方法。
将运行的代码放在run方法中。
3、调用start方法,开启一个线程会自动调用run方法。
在每一个时刻,只能有一个程序在运行。
只是cpu在做快速的切换,达到同时运行的成效。
155、每个线程都有自己默认的名称,thread--编号,从0开始。
156、getName()
157、线程安全问题:当多条语句在同一个线程共享数据时,一个线程对多条语句只执行了一部分,还没执行完,另一个线程就进来了,导致线程错误。
158、解决方法:让一个线程执行完,在执行的过程中其他线程不能参与,把多条语句上了锁,让其他的线程不能参与。
159、Java中对多线程安全问题提供了专业的解决方法。
将需要的代码一次性执行完。
确实是一个锁。
synchronized (mutex) {//mutex是一个对象。
需要执行的代码块
}
synchronized也能够在方法上面添加,表示给那个方法上锁。
同一时刻只能有一个线程调用。
160、静态方法被synchronized修饰时,synchronized (类名.class){}
161、前提:必须要有两个或者两个以上的线程。
162、死锁:一个线程正在等待另一个线程开释资源,另一个线程也再做同样的事。
是由于嵌套同步导致的。
163、线程的通信:确实是多个线程在操作同一个资源。
然而操作的动作不同。
164、只有同一个锁上的等待线程,才能够被同一个锁上的线程激活。
Day 17
165、网络编程:网络的差不多三要素 1、IP 127.0.0.1网络回环地址。
Cmd命令ping 能够测试是否和其他电脑联通。
Ipconfig显示出本
地的Ip配置
2、端口数据要发送到对方指定的应用程序上,为了标识这些应用程序,因此给
这些程序一个数字标识。
那个数字叫做
端口。
3、TCP/IP协议通讯的规则
IP:网络中的设备标识
localhost ://localhost:8080/
端口号:用于标识进程的逻辑地址,不同进程的标识。
有效端口0~65535 其中0~1024是系统使用或者
保留的端口。
UDP协议:面向无连接
1、将数据及源和目的装成数据包,不需要建立连接。
2、每个数据包大小不能超过64k。
3、因为是无连接的,不靠协议
4、不需要建立连接,速度快。
TCP协议:建立连接形成传输通道。
1、在建立中传输大数据量。
2、通过三次握手建立连接,是可靠协议。
3、必须建立连接,效率会低。
UDP对应的类DatagramScoket 数据包的类DatagramPacket
Scoket :是网络服务的一种机制,通讯两端都有Scoket,网络通讯事实上确实是Scoket之间的通讯,数据在
两个Scoket之间通过IO进行传输。
Packet:关于要打送的东西打包的过程
UDP现实发送数据的步骤:
1、建立UDP的socket,建立DatagramSocket的队像
2、预备好要发送的数据放在一个字节数组中
实现简单的谈天程序:需要发送和同意同时进行,
Day 18
166、服务器端:ServerSocket
客户端:Socket
Day 20
167、查询emp表中职员的编号、姓名、工作select EMPNO, ENAME , JOB from emp; 167、 select JOB 工作 from emp; 中的“工作”是job的别名(不建议使用中文)168、select distinct job from emp; 这条语句能够滤掉job中重名的工作名(排除重复)
169、查询职员的姓名和工作。
select distinct ename,job from emp;
排除重复列的时候,假如是要查询多列,则必须保证所有列都重复才会被滤掉。
170、查询出emp表中的职员编号,姓名,工资,工作要求查询出的格式是:姓。