java入门笔记Word格式.docx

上传人:b****4 文档编号:16711585 上传时间:2022-11-25 格式:DOCX 页数:13 大小:24.33KB
下载 相关 举报
java入门笔记Word格式.docx_第1页
第1页 / 共13页
java入门笔记Word格式.docx_第2页
第2页 / 共13页
java入门笔记Word格式.docx_第3页
第3页 / 共13页
java入门笔记Word格式.docx_第4页
第4页 / 共13页
java入门笔记Word格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

java入门笔记Word格式.docx

《java入门笔记Word格式.docx》由会员分享,可在线阅读,更多相关《java入门笔记Word格式.docx(13页珍藏版)》请在冰豆网上搜索。

java入门笔记Word格式.docx

要调用对象中的属性和方法使用“.”操作符。

this关键字:

是用来指向当前对象或类实例的,作用:

(1)点取成员:

就是在编写类的时候,通过使用this来点取类的属性。

(2)区分同名变量:

如果使用this就表示调用属性,否则就调用方法内部变量。

(3)作为方法名来初始化对象。

初始化一个类必须先初始化它的属性。

实例变量能够自动初始化,局部变量必须在使用之前“手工”初始化。

封装的功能:

隐藏对象的实现细节迫使哟暴发户去使用一个界面访问数据,所谓界面就像是房间的门一样,你应该通过门进入房间是代码更好维护。

继承可以使得子对象具有负累的各种属性和方法,而不需要再次编写相同的代码,当然在令子对象继承父对象的同时么可以重新定义某些属性,并重写某些方法,既覆盖父对象的原有属性的方法,使其获得与父对象不同的功能。

在java中is-a是用来描述继承关系的。

在java中has-a是用来描述对象组合关系的。

多态:

同一行为的多种不同表达,或者同一行为的多种不同实现。

继承的时候和实现接口的时候会出现多态。

引用类型是指向一个对象而不是原始值的类型,指向对象的变量是引用变量。

在java中凡是用new创建的对象都是引用对象。

Stringa=“11111”;

Stringa=newstring(“11111”);

按值传递:

值得是在方法调用时,传递的参数是按值的拷贝传递。

按值传递的重要特点:

传递的是值的拷贝,也就是说传递后就互不相关啦。

基本类型和string类型全部都是按值传递的。

(你变你的,我变我的,没有关系)

按引用传递:

是在调用方法时,传递的参数是按引用进行传递,其实传递的引用地址,也就是变量所对应的内存空间的地址。

按引用传递的重要特点:

传递的是值的引用,也就是说传递前和传递后都指向同一个引用(也就是同一个内存空间)

“在java里面参数传递都是按值传递”这句话的意思是:

按值传递是传递的值的拷贝,按引用传递的其实传递的是引用的地址值,所以统称按值传递。

在java里面只有基本类型和string类型是按值传递,其他的都是按引用传递,原因很简单,因为string有一个特点:

“string的值不可改变”。

在JDK中针对各种基本数据类型分别定义相应的引用类型,称这些类型为包装类。

(基本类型类的表达)

每个包装类的对象可以封装一个相应的基本类型的数据,并提供了其他一些有用的功能。

包装类一经创建,其内容(所封装的基本类型数据值)不可改变。

自动包装:

就是把基础数据类型自动封装并转换成对应的包装类的对象。

自动解包:

就是把包装类的对象自动解包并转换成对应的基础数据类型。

强制类型转换只能用在原本就是某个类型,但是被表示成了另外一种类型的时候,可以把它强制转换回来,强制转换并不能再任意的类型间进行转换。

在四则运算表达式中:

byteshortchar都会自动升级成为int进行运算。

在四则运算表达式中,如果不强制进行类型的转换,俺么运算最后的结果就是精度最高的那个操作数决定的。

继承后的基本运行顺序:

规则:

初始化子类必先初始化父类。

(初始化一个类必先初始化属性)

单继承性:

当一个类从一个唯一的类继承时,被称作单继承性,单继承性使代码更可靠。

Java类的继承只能是单继承。

构造方法与私有属性和方法都不能被继承。

关键字super可被用来引用该类的父类,它被用来引用父类的成员变量或方法。

(与this对比,this自己引用自己)

super关键字的作用:

点取父类中被子类隐藏的数据成员。

点取已经覆盖了的方法。

作为方法名表示父类构造方法。

调用父类构造方法,在许多情况下,使用默认构造方法来对父类对象进行初始化,当然一额可以使用super来显示调用父类的构造方法。

(this或者super如果要调构造方法,如果要写的话,一定要写在构造方法内部的第一行)

方法的覆盖:

在父子类中,如果某个方法的名称,返回类型及参数列表正好与父类中的某个方法完全一样,那么这个方法就是覆盖方法,子类覆盖了父类的方法。

编译的时候看数据类型,运行时看实际的对象类型(new操作符后跟的构造方法是哪个类的),一句话,new谁就是调用谁的方法。

覆盖方法的规则:

覆盖方法的返回类型,方法名称,参数列表必须与它所覆盖的方法相同。

覆盖方法不能比它所覆盖的方法访问性差(即访问权限只可以扩大不允许缩小)

覆盖方法不能比它所覆盖的方法抛出更多的异常。

覆盖多出现在父子类

重载:

在同一个java类中(包含父类),如果出现了方法的名称相同,而参数列表不同的情况就叫做重载,参数列表不同的情况包括:

个数不同,类型不同,顺序不同等,特别提示,仅仅参数变量名称不同是不可以的。

注意:

跟成员方法一样,构造方法也可以重载。

(根据参数列表判断调的是谁)

方法重载的规则:

方法名称必须相同

参数列表必须不同(个数不同或类型不同,或参数排列顺序不同)

方法的返回类型可以相同也可以不同

调用语句的参数表必须有足够的不同,以至于允许区分出正确的方法被调用,正常的拓展晋升(如,单精度类型float到双精度类型double),可能被应用,但是这样会导致在某些条件下的混淆。

final的方法可以重载。

重载多出现在一个类中。

一个对象只有一个格式(是在构造时给它的),但是,既然变量能指向不同格式的对象,那么变量就是多态性的,也就是说一个对象之哟一种形式,但一个变量却有多种不同的形式。

instanceof用来判断某个变量是否属于某种类的类型。

多态的类型转换,子类向父类转时可以的。

绑定:

将一个方法的调用同一个方法的主题连接到一起就称为“绑定”。

(运行时刻才连接就叫动态绑定,java中绑定的方法都是采用动态绑定,除非一个方法被声明为final)

static修饰符:

能够与属性、方法、和内部类一起使用。

表示是“静态”的。

(静态不用new一个实例就可以调用)

类中的静态变量和静态方法能够与“类名”一起使用,不需要创建一个类的对象来访问该类的静态成员。

一个类中,一个static变量只会有一个内存空间,虽然有多个类实例,但这些实例中的这个static变量会共享同一个内存空间。

static的变量是在类装载的时候就会被初始化,也就是说,只要类被装载,不管你是否使用了static变量,它都会被初始化。

(被初始化一回,类只会被装载一回)

static的基本规则:

1、一个类的静态方法只能访问静态属性()

2、一个静态方法不能直接调用非静态方法

3、如果访问控制权限允许,static属性和方法可以使用对象名加“.”方式调用;

当然也可以是有实例加“.”方式调用。

4、静态方法中不存在当前对象,因而不能使用“this”,当然也不能使用“super”。

5、静态方法不能被非静态方法覆盖

6、构造方法不允许声明为static

非静态变量只限于实例,并只能通过实例引用被访问。

final所标记的成分基于“终态”的特征,最终的。

(类,属性变量,本地变量)

final的具体规则:

1、final标记的类不能被继承

2、final标记的方法不能被子类重写

3、final标记的变量(成员变量或局部变量)即成为变量,只能赋值一次

4、final标记的成员变量必须在声明的同时赋值,如果在声明的时候没有赋值,那么只有一次赋值的机会,而且只能在构造方法中显式赋值,然后才能使用。

5、final标记的局部变量可以只声明不赋值,让再进行一次性的赋值(参数列表也算局部变量)(static不能用在局部变量里面)

6、final一般用于笔记那些通用的功能,实现方式或取值不能随意被改变的成分,以避免被误用。

finalstrings;

S=“111”;

System.out.println(“s==”+s);

Java程序运行时的内存结构分成:

方法区,栈内存,堆内存,本地方法栈

方法区存放装载的类数据信息包括:

(1)基本信息

1、每个类的权限定名(带包结构的)

2、每个类的直接超类的权限定名

3、该类是类还是借口

4、该类型的访问修饰符

5、直接超类借口的权限定名的有序列表

(2)每个已装载类的详细信息

1、运行时的常量池

2、字段信息

3、方法信息

4、静态变量

5、到类classloder的引用

6、到类的引用

主要放的,把类分类全部放在方法区

栈内存:

以帧的形式存放本地方法的调用状态,包括方法调用的参数,局部变量,中间结果(已经运行起来的)(虚拟机的垃圾回收器不管)

栈有一个很重要的特性,就是存在栈中的数据可以共享。

堆内存:

存放有new创建的对象和数组,在堆中分配的内存,由java虚拟机的自动回收器来管理。

本地方法的栈内存:

java通过java本地借口JNI来调用其他语言编写的程序,在java里面用native修饰符来描述一个方法的本地方法。

String的内存分配:

Stringstr=newString(“abc”);

Stringstr=“abc”;

String类的值是不可改变的。

(按值传递)

数组:

数组是由相同类型的若干项数据组成的一个数据集合,也就是说用来集合相同类型的对象并通过一个名称来引用这个集合,数组时引用类型。

可以声明任何类型的数组——原始类型或类类型

声明不能创建对象本身,而创建的是一个引用,该引用可被用来引用数组

1、声明不指出数组的实际大小

2、当数组声明的方括号在左边时,该方括号可应用于所有位于其右的变量

数组的创建

使用new关键字来创建一个数组,创建的时候要指明数组的长度inta[]=newint[2];

数组的下表称为数组的索引,必须是整数或者整数的表达式。

数组一旦被创建,在内存里面占用连续的内存地址。

数组还具有一个非常重要的特性——数组的静态性:

数组一旦被创建,不能更改数组长度。

当创建一个数组时,每个元素都被自动使用默认值进行初始化。

如果是本类型就按照每种类型默认的值进行初始化;

而引用类型初始化成null。

数组的初始化就是对数组里面的每一个元素进行赋值。

取值与赋值:

取值摆在左边,赋值摆在右边。

多维数组:

newint[][4]是非法的。

newint[4][]就对啦。

多维数组的本质就是一维数组N-1维数组。

数组一旦创建后,其大小不可调整。

数组的复制:

五个参数(API)

排序:

冒泡排序基本思路:

对未排序的各元素从头到尾以此比较相邻的另个元素是否逆序(与欲排序的程序相反),若逆序就交换这两个元素,经过第一轮比较排序后便可把最大(或最小)的元素排好,然后再用同样的非法把剩余的元素逐个比较,就得到了你需要的序列。

for(inti=0;

i<

a.length;

i++){

for(intj=i+1;

j<

a.length;

j++){

if(a[i]>

a[j]){

Inttemp=a[j];

a[j]=a[i];

a[i]=temp;

选择排序基本思路:

从所有元素中选择一个最小元素a[i]放在a[0](即让最小元素a[i]与a[0]交换),作为第一轮;

第二轮是从a[1]开始到最好的各个元素中选择一个最小元素,放在a[1]中……一次类推。

N个数要进行n-1论,比较的次数和冒泡法一样多,但是在每一轮中只进行一次交换,比冒泡法的交换次数少,相对于冒泡法效率高。

inttemp;

for(inti=0;

intlowIndex=i;

for(intj=i+1;

if(a[j]<

a[lowIndex]){

lowIndex=j;

temp=a[i];

a[i]=a[lowIndex];

a[lowIndex]=temp;

插入法排序基本思路:

每拿到一个元素,都要将这个元素与所有它之前的元素便利一遍,让符合排序顺序的元素挨个移动到当前范围内它最应该出现的位置。

inttemp;

for(inti=1;

for(intj=I;

(j>

0)&

&

(a[j]<

a[j-1]);

j--){

temp=a[j];

a[j]=a[j-1];

a[j-1]=temp;

事实上,数组的排序不用那么麻烦,在java.util.Arrays类中有一个静态方法sort,可以用这个类的sort方法来对数组进行排序(现在的sort方法时升序的)

枚举类型:

enum是一种新的类型(参数传递时按值传递),在JDK5.0加入,允许用常量来表示特定的数据片段,这些数据时分配时预先定义的值的集合,而且全部都以类型安全的形式来表示。

(简单点说就是常量的集合)

values()方法返回了一个由独立的StudentGrade实例构成的数组。

valueof(string):

功能是以字符串的形式返回某一个具体元素的值。

常见类的使用:

Object类简介:

是所有java类的根父类(单根性),任何java对象,如果没有父类,就默认它为继承了object类,因此,实际上,以前的定义是下面的简略:

PublicclassEmployeeextendsObject

Object类定义的equals方法用于判断某个指定的对象与当前的对象(调用equals方法的对象)是否等价,数据等价的基本含义是指两个数据的值相等。

publicBooleanaquals(Objectobj){

return(this==obj);

equals方法与“==”运算符的关系

1、equals()方法只能比较引用类型,“==”可以比较引用类型及基本类型

2、默认的equals()方法比较的是内存地址,基本等同于“==”,但对于类File,String,Data()及包装来说,是比较的是值而不是内存地址

3、“==”进行比较的时候,引用比较数据类型比较的是引用,即内存地址,基本数据类型比较的是值。

(覆盖钱equals和==比较的都是内存地址,覆盖后equals比较的是值,==比较的是内存地址)

控制台输入:

importjava.util.regex.*;

importjava.util.*;

importjava.text.*;

importjava.io.*;

publicclassTest{

publicstaticvoidmain(String[]args)throwsException{

Strings="

"

;

InputStreamReaderin=newInputStreamReader(System.in);

BufferedReaderbin=newBufferedReader(in);

try{

s=bin.readLine();

while(s!

=null){

System.out.println("

s==="

+s);

s=bin.readLine();

}

}catch(Exceptionerr){}

finally{

try{

in.close();

bin.close();

}catch(Exceptionerr){

}

第六章内容没有详细看:

主要介绍了一些类的使用。

有math类,日期操作类System类等,以后用到回看。

抽象类和接口:

抽象类:

只给出方法定义而不具体实现的方法被称为抽象方法,抽象方法是没有方法体的,在代码的表达式上就是没有“{}”

抽象类如何表达:

使用abstract修饰符来表达抽象。

Abstract修饰符可以与类和方法一起使用,被修饰的类不能实例化,被修饰的方法必须包含此方法的类的子类中被实现。

抽象类简单的说:

使用abstract修饰的类就是抽象类。

有抽象方法的类一定是抽象类。

抽象类一定有抽象方法是错误的。

凡是用abstract修饰的类就是抽象类。

抽象类不能直接使用,必须用子类去实现抽象类,然后使用其子类的实例,然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例,也就是可以使用抽象类来充当形参,实际实现类作为实参,也就是多态的应用。

(必须写一个类去继承抽象类,并实现抽象类中的抽象方法,使用抽象类实际就是使用它的实现类)

不能有抽象构造方法或抽象静态类,abstract类的子类为他们父类中的所有抽象方法提供实现,否则它们也是抽象类。

接口:

java可以创建一种称作接口的类,在这个类中,所有的成员方法都是抽象的,也就是说他们都只有定义而没有具体实现的类,接口是抽象方法和常量值的集合,从本质上说,接口是一种特殊的抽象类,这种类中只包括常量和方法的定义,而没有变量和方法的实现。

接口的语法格式:

访问修饰符修饰符interface接口名称{

抽象属性集

抽象方法集

1、接口中声明的属性默认认为,也只能是publicstaticfinal的,因此在常量声明可以省略这些修饰符

2、接口中只能定义抽象方法,这些方法默认为publicabstract的,也只能是publicabstract的,因而在声明时可以省略这些修饰符

3、和继承抽象父类类似,java类可以实现接口

接口不能直接使用,需要让java类实行接口,然后使用其实现类,必须重写(实现)全部抽象方法,否则只能声明为抽象类

接口不能直接使用new关键字来构建实例

Interfacea=newInterfaceA();

是错误的

接口在使用的时候要实例化相应的实现类

Interfacea=newImplenmentsA();

一个类可以有多个接口,但是public的只有一个。

接口之间可以继承,可以多继承,一个接口可以继承多个接口,但是类是单继承。

 

Java中级教程:

集合是对象,集合是包含多个对象的简单对象,所包含的对象称为元素。

集合里面可以包含任意多个对象,数量可以变化;

同时对对象的类型也没有限制,也就是说集合里面的所有对象的类型可以相同,也可以不同(同数组,数组定长的)

集合的特点:

数量不限,类型不限

“集合框架”由一组用来操作对象的借口组成,不同借口描述不同的类型的组

集合框架中各接口的特点:

1、collection接口是一组允许重的对象

2、set接口继承collection,无需但不允许重复

3、list接口继承collection,有序但允许重复,并引入位置下标

4、Map接口即不继承set也不继承collection,是键值对

Collection接口

用于表示任何对象或元素组,想要尽可能以常规方式处理一组元素名酒使用这一接口。

Iterator接口:

主要用来枚举集合中的类型

GUI:

图形用户接口,即人机交互图形化用户界面,就是屏幕产品的视觉体验和互动操作部。

AWT抽象窗口工具,包括了丰富的图形,用户界面组件和布局管理器的支持,还有对外界事件的处理机制。

Component:

具有图形界面,并能完成一定功能的封装体。

Container:

用于包含其他组件的组件。

Container是component的一个抽象子类。

它允许其他的组件被嵌套在里面。

Panel是container的最简单的类,container的令一个子类是window。

Window有两种形式:

Frame(框架)和Dialog(对话框)。

Frame和Dialog是Window的子类,Frame是一个带有标题和缩放角的窗口,对话没有菜单条,尽管它不能移动,但它不能缩放。

常见的界面的组合:

组件放在Panel里面。

Panel放在Frame上,也就是说通常用Panel来进行界面的组合,一个Panel就是一个界面,那么界面的切换就相当于切换Framel里面的Panel

菜单的实现:

不能将菜单加到一般容器中。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1