java入门笔记.docx
- 文档编号:3805330
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:13
- 大小:24.33KB
java入门笔记.docx
《java入门笔记.docx》由会员分享,可在线阅读,更多相关《java入门笔记.docx(13页珍藏版)》请在冰豆网上搜索。
java入门笔记
1、String是不可不变的,也就是说一旦定义并赋值了,string将不会改变,修改string的值其实是生成了一个string。
2、变量在计算机内部对应着一个存储单元,而且总是具有某种数据类型,基本数据类型或引用数据类型。
3、用+进行串连接,运算符+能够进行string对象的连接并生成一个新的string。
4、switch(expr1){}中的expr1只能是整数型的值或者enum枚举类型的常量值,包含byte,short,int和char,不能是字符串或对象,也不能是long型的值。
5、如果没有break语句作为某一个case代码段的结束句,则程序的执行将继续道下一个case,而不检查case表达式的值。
6、把抽象对象使用java描述出来,那就是类class。
Java类的定义形式
一个完整的java类通常由下面留个部分组成:
包定义语句
import语句
类定义{
成员变量
构造方法
成员方法
}
在java中,包是类,接口或其他包的集合,包主要用户来将类组织起来称为包,从而对类进行管理(类似于文件夹),简言之,包是用来组织和管理类的。
import的功能:
import语句为编译器指明了寻找类的途径:
我们在a包中有一个A类,现在在b包里面的B类项要使用它,这样就可以利用import来引入。
Java搜寻类的时候是找到一个符合的就停止搜索。
类有一个特殊的成员方法叫做构造方法,它的作用是在穿件对象时候初始化成员变量,在创建对象时,会自动调用类的构造方法,也就是说构造方法其实是个回调方法。
类的属性就是对象所具有的静态属性,定义规则:
访问修饰符修饰符类型属性名称=初始值
属性有时候也被称为成员变量,实例变量,域,他们经常被互换使用。
方法就是对象所具有的动态功能,定义规则:
访问修饰符修饰符返回值类型方法名称(参数列表)throws异常列表{方法体}
返回值的类型,如果方法不返回任何值,它必须声明为一个void
形参:
就是形式参数的意思,是在定义方法名的时候使用的参数,用来标识方法接收的参数
类型,在调用该方法时传入。
(其实相当于声明)
实参:
就是实际参数的意思,是在调用方法时传递给改方法的实际参数。
new:
初始化对象,为这个对象分配内存空间。
意味着内存的分配初始化,new调用的方法就是类的构造方法。
要调用对象中的属性和方法使用“.”操作符。
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 for(intj=i+1;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;i intlowIndex=i; for(intj=i+1;j
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 入门 笔记