java基础知识点总结.pdf
《java基础知识点总结.pdf》由会员分享,可在线阅读,更多相关《java基础知识点总结.pdf(36页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、Created by Alwe n on 2017/5/14.java是面向对象的程序设计语言;类可被认为是一种自定义的数据类型,可以使用类来定义变量,所有使用类定义的变量都是引用变量,它们将会引用到类的对象。类用于描述客观世界里某一类对象的共同特征,而对象则是类的具体存在,java程序使用类的构造器来创建该类的对象。java也支持面向对象的三大特征:圭寸装、继承、和多态。制修饰符来实现良好的封装,提供了java提供了private、protected、和public三个访问控extends关键字让子类继承父类,子类继承父类就可以继承到父类的成员变量和和方法,如果访问控制允许,子类实例可以直接
2、调用父类里定义的方法。继承是实现类复用的重要手段。使用继承关 系来实现复用时,子类对象可以直接赋给父类变量,这个变量具有多态性。面向对象的程序设计过程中有两个重要的概念:类(Class)和对象(object,也被称为实例,instanee)。类可以包 含三种最常见的成员:构造器、成员变量、和方法。构造器用于构造该类的实例,java语言通过new关键字类调用构造器,从而返回该类的实例。构造器是一个类创建java语言提供了一个功能:如果程序员对象的根本途径,如果一个类没有构造器,这个类通常无法创建实例。因此将不再为该类提供构造器。没有为一个类编写构造器,则系统会为该类提供一个默认的构造器,这个构造
3、器总是没有参数的。一旦程序员为一个 类提供了构造器,系统构造器用于对类实例进行初始化操作,构造器支持重载,如果多个重载的构造器里包含了相同的初始化代码,则可以 把这些初始化代码放置在普通初始化块里完成,初始化块总在构造器执行之前被调用。静态初始化块代码用于初始化 类,在类初始化阶段被执行。如果继承树里某一个类需要被初始化时,系统将会同时初始化该类的所有父类。构造器修饰符:可以是public、protected、private其中之一,或者省略构造器名:构造器名必须和类名相同。注意:构造器既不能定义返回值类型,也不能使用或使用void声明构造器没有返回值,编译时不会出错,但是构造器。void声明
4、构造器没有返回值。如果为构造器定义了返回值类型,java会把这个所谓的构造器当成方法来处理一一它就不再实际上类的构造器是有返回值的,当使用new关键字来调用构造器时,构造器返回该类的实例,可以把这个类的实例当成构造器的返回值。因此构造器的返回值类型总是当前类,无须定义返回值类型。不要在构造器里显式的使用return来返回当前类的对象,因为构造器的返回值是隐式的。java类名必须是由一个或多个有意义的单词连缀而成的,每个单词首字母大写,其他字母全部小写,单词与单词之 间不要使用任何分隔符。成员变量:成员变量的修饰符:public、protected、private、static、final前三个
5、只能出现一个再和后面的修饰符组合起来修饰成员变量,也可省略。成员变量:由一个或者多个有意义的单词连缀而成,第一个单词首字母小写,后面每个单词首字母大写,其他字母全 部小写,单词与单词之间不要使用任何分隔符。类型:可以是java语言允许的任何数据类型,包括基本类型和引用类型。成员方法:方法修饰符:public、protected、private、static、final、abstract,前三个只能出现一个,多只能出现其中的一个,和static和final最abstract组合起来使用。也可省略。返回值类型:可以是java语言的允许的任何数据类型,包括基本类型和引用类型。方法名:和成员变量的方法
6、命名规则相同,通常建议方法名以英文动词开头。方法体里多条可执行语句之间有严格的执行顺序,排在方法体前面的语句总先执行,排在方法体后面的语句总是后执 行。static是一个特殊的关键字,它可用于修饰方法、成员变量等成员。不属于该类的单个实例,因此通过把静态成员不能直接访问非静态成员。static修饰的成员表明它属于这个类本身,而static修饰的成员变量和方法被称为类变量、类方法(静态成员变量,静态成员方法);不使用static修饰的成员变量和方法称为实例变量和实例方法(非静态成员变量,非静态成员方法)。static的真正作用就是用于区分成员变量、方法、内部类、初始化块,这四种成员到底属于类本身
7、还是属于实例。有static修饰的成员属于类本身,没有类修饰的成员属于该类的实例。java类大致有如下作用:定义变量创建对象调用类的类方法或访问类的类变量。定义一个类就是为了重复创建该类的实例,同一个类的多个实例具有相同的特征,而类则是定义了多个实例的共同特 征。类里定义的方法和成员变量都可以通过类或实例来调用。通过实例来调用;没有使用Static修饰的方法和成员变量,既可通过类来调用,也可static修饰的普通方法成员变量,只可通过实例来调用。Person实例,也被称为Person对象,这个Person对象被赋给p变量。Person p=new Person。;这行代码创建了一个在这行代码中
8、实际上产生了两个东西,一个是p变量,一个是Person对象。P引用变量本身只存储了一个地址值,并未包含任何实际数据,但它指向实际的Person对象。Person对象由多块内存组成,不同内存块分别存储了对象则存放在堆内存中。当一个对象被创建成功以后,这个对象将保存在堆内存中,Person对象的不同成员变 量。类是一种引 用数据类型,因 此程Person对象;而真正的Person序中定义的Person类型的变量实际上是一个引用,它被存放在栈内存里,指向实际的java程序不允许直接访问堆内存中的对象,只能通过该对java垃圾象的引用操作该对象。堆内存里的对象可以有多个引用,即多个引用变量指向同一个对
9、象。如果堆内存里的对象没有任何变量指向该对象,那么程序将无法再访问该对象,这个对象也就变成了垃圾,回收机制将回收该对象,释放该对象所占的内存区。对象的this引用Java提供了一个this关键字,this关键字总是指向调用该方法的对象。构造器中引用该构造器正在初始化的对象;在方法中引用调用该方法的对象。This作为对象的默认引用有两种情形:This关键字最大的作用就是让类中一个方法,访问该类里的另一个方法或者实例变量。Java允许对象的一个成员直接调用另一个成员,可以省略this前缀。如果在static修饰的方法中使用this关键字,则这个关键字就无法指向合适的对象,所以,static修饰的方
10、法中不能使用this引用。Java编程时不要使用对象去调用法。static修饰的成员变量、方法、而是应该使用类去调用static修饰的成员变量、方如果确实需要在静态方法中访问另一个普通方法,则只能重新创建一个对象。大部分的时候,普通方法访问其他方法、成员变量时无须使用名,但程序又需要在该方法里访问这个被覆盖的成员变量,则必须使用this前缀,但如果方法里有个局部变量和成员变量同this前缀。new关键字来调用,而不是使用对象来调用的,This引用也可以用于构造器中作为默认引用,由于构造器时直接使用所以this在构造器中代表该构造器正在初始化对象。方法:Java里的方法不能独立存在,所有的方法都
11、必须定义在类里。如果这个方法是用来调方法是普通方法,则默认使用static修饰,则这个方法属于这个类,否则这个方法属于这个类的实例。执行方法时,必须使用类或者对象作为调用者。同一个类的一个方法调用另 外一个方法时,如果被this作为调用者;如果被调用方法是静态方法,则默认使用类this或者类来作为调用者。作为调用者。也就是说java中看起来某些方法可以被独立执行,但实际上还是使用Java里方法参数传递方式只有一种:值传递。所谓值传递,就是讲实际参数值的副本(复制品)传入方法内,而参数 本身不会受到任何影响。从JDK1.5之后,java允许定义形参个数可变的参数,从而允许为方法指定数量不确定的形
12、参。如果在定义方法时,在最后一个形参的类型后增加三点(),则表明该形参可以接受多个参数值,多个参数值被当成数组传入。public class Varargs/定义形参可变的方法public static void test(int a,String.books)/books 被当成数组处理for(Stri ng tmp:books)System.System.out.println(a);I public static void main(String args)out.println(tmp);II调用 test 方法test(5,hello,world,aa);_数组形式的形参可以处于形参
13、列表的任意位置,但个数可变的形参只能处于形参表的最后。也就是说最多只能有一个 长度可变的形参。形参可变和传入数组的区别:public static void test(int a,String.books);public static void test(int a,String books);test(5,aa,bb,cc);test(5,new Stringaa,bb,cc);方法重载:Java允许同一个类里定义多个同名方法,只要形参列表不同就行。如果同一个类中包含了两个或两个以上方法的方法 名相同,但形参列表不同,则被称为方法的重载。Java程序确定一个方法需要三个要素:调用者;方法名;
14、形参列表。方法的重载要求就是两同一不同:同一个类中方法名相同,参数列表不同。至于方法的其他部分,如方法返回值类型、修饰符等,与方法重载没有任何关系。public class OverloadVarargs public void test(Stri ng msg)System.out.println(”只有一个参数的test);/因为前面已经有了一个字符串参数的方法,则长度可变形参里不包含一个字符串参数的形式public void test(Stri ng.books)System.out.println(”形参可变的test方法);r public static void main(Stri
15、ng args)OverloadVarargs olv=new OverloadVarargs();/下面两次调用将执行第二个 test 方法olv.test();olv.test(aa,bb);匚 将调用第一个 test 方法olv.test(aa);将调用第二个 test 方法olv.test(new Stri ngaa);Java中变量分为:成员变量和局部变量。成员变量被分为类变量和实例变量两种,定义成员变量时没有的就是实例变量,有static修饰的就是类变量。static修饰变量的命名:从程序的可读性角度来看,应该是多个有意义的单词连缀而成,其中第一个单词首字母小写,后面 每个单词首字
16、母大写。如果通过一个实例修改了类变量的值,由于这个类变量并不属于它,而是属于它对应的类。因此,修改的依然是 类变量,与通过该类来修改类变量的结果完全相同,这会导致该类的其他实例来访问这个类变量时也将获得这个 被修改过的值。成员变量无须显式初始化,只要为一个类定义了类变量或实例变量,系统就会在这个类的初始化阶段或创建该类 的实例时,进行默认初始化。实例变量随实例的存在而存在,而类变量则随类的存在而存在。实例也可访问类变量,同一个类的所有实例访问 类变量时,实际上访问的是该类本身的同一个变量,也就是说,访问了同一片内存区。局部变量根据定义形式的不同,又可分为三种形式:形参,方法局部变量,代码块局部
17、变量;局部变量除了形参 之外,都必须显示初始化。在同一个类里,成员变量的作用范围是整个类内有效,一个类里不能定义两个同名的成员变量,即使一个是类变 量,一个是实例变量也不行;一个方法里不能定义两个同名的方法局部变量,方法局部变量与形参也不能同名;同一个方法中不同代码块内局部变量可以同名;如果先定义代码块局部变量,后定义方法局部变量,前面定义的 代码块局部变量与后面定义的方法局部变量也可同名Java允许局部变量和成员变量同名,如果方法里的局部变量和成员变量同名,局部变量会覆盖成员变量,如果需要在这个方法里引用被覆盖的成员变量,则可使用访问成员变量。this(对于实例变量)或类名(对于类变量)作为
18、调用者来限定public class VariableOverrideTest II定义一个 name 实例变量private String name=李冈U;II定义一个 price 类变量private static doubleprice=78.0;public static void main(String args)II 方法里局部变量覆盖成员变量,将输出 price 的局部变量 65int price=65;System.out.println(price);II 使用类名作为 price 变量的限定,将输出 price 类变量的值System.out.println(Variab
19、leOverrideTest.new VariableOverrideTest。nfo();public void in fo()price);II 方法里的局部变量,局部变量覆盖成员变量,输出String name=孙悟空;System.out.println(name);name 局部变量的值:孙悟空II 将输出 name 实例的值:李刚System.out.println(this.name);当系统加载类或创建该类的实例时,系统自动为成员变量分配内存空间,并在分配内存空间后,自动为成员变量指定 初始值。Person p1=new Person();时,如果这行代码是第一次使用这个类,并
20、初始化这个类。Person类,则系统通常会在第一次使用Person类时加载局部变量定以后,必须经过显式初始化后才能使用,系统不会为局部变量执行初始化。局部变量不属于任何类或者实 例,因此它总是保存在其所在方法的栈内存中。如果局部变量时基本类型的变量,则直接把这个变量的值保存在该变 量对应的内存中;如果局部变量是一个引用类型的变量,则这个变量里存放的是地址,通过该地址引用到该变量实际 引用的对象或者数组。栈内存中的变量无须系统垃圾回收,往往随是方法或代码块的运行结束而结束。如果定义的某个变量是用于描述某个类或某个对象的固有信息的,这种变量应该定义成成员变量。如果这种信息对这 个类的所有实例完全相
21、同,或者说它是类相关的,则该定义成类变量;如果这个信息是实例相关的,则应该定义成实 例变量。用于保存某个类或某个实例状态信息的变量通常应该使用成员变量。如果某个信息需要在某个类的多个方法之间进行 共享,则这个信息应该使用成员变量来保存。隐藏和封装访问控制符用于控制一个类的成员是否可以被其他类访问。Java提供了3个访问控制修饰符:private,protected,和public,还有一个默认访问控制修饰符Private(当前类访冋权限);default(包访问权限);protected(子类访问权限):如果一个成员使用defaultprotected访问吏冃用修饰符修饰,那么这个成员既可以被
22、同一个包中的其他类访问,也可以被不同包中子类访问。通常情况下,使protected修饰的方法,通常希望其子类来重写这个方法。别:Public(公共访问权限)对于局部变量而言,其作用域就是它所在的方法,不可能被其他类访问,因此不能使用访问控制符来修饰。外部类只能有两种访问控制级public和默认,不能使用private和protectedpublic class Person private String name;private int age;public void setName(Stri ng n ame)if(n ame.le ngth()6|n ame.le ngth()100|ag
23、e 5);/两个包装类实例进行比较时,只有两个包装类引用指向同一个对象时才返回System.out.println(new Integer(2)=new Integer(2);ture|系统把一个-128-127之间的证书自动装箱成一个-128-127之间的整数自动装箱成一个同一个整数自动装箱成Integer实例,并放入了一个名为cache的数组中缓存起来。如果以后把因此-128-127之间的Integer实例时,实际上是直接指向对应的数组元素,In teger实例。Integer实例时,永远都是引用cache数组的同一个数组元素,所以它们都相等。但如果整数不在这个范围内,则会重新创建一个pu
24、blic class TestDmo2 public static voidIn teger a=In teger b=System.In teger biga=In teger bigb=System.2;2;main(Stri ng args)out.pri ntl n(a=b);/true128;128;out.pri ntl n(biga=bigb);/false5.2处理对象 对象打印的误区:public classPrin tObject public static voidmain(Stri ng args)Pers on p=new Pers on(Peter);/如果想打印
25、p 对象的内容,下面两种方法都不可以,打出来的都是地址值/ObjectSystem.r 类提供的 toString()方法总是返回该对象实现类的类名+hashCode”的值out.pri ntln(p.toStri ng();System.out.println(p);class Pers onprivate String n amepublicPerson(Stri ng n ame)this.name=name;重写toString()方法,通过重写,就可以让系统在打印Apple对象时打印该对象的自我描述”内容public classToStri ngTest main(Stri ng a
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 基础 知识点 总结
限制150内