ImageVerifierCode 换一换
格式:DOCX , 页数:87 ,大小:665.24KB ,
资源ID:7029378      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7029378.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java基础104M24.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

java基础104M24.docx

1、java基础104M24Java基础一、面向对象1、类的定义 类:具有相同功能和相同属性的一类事物的集合。 例子:对人类进行描述 人:属性:姓名、年龄、性别 功能:吃的功能、跑的功能,等等。 如何通过程序语言表述: Person.javaclass Person String name; int age; String sex; public void eat() System.out.println(吃。); public void run() System.out.println(跑。); 编译:javac Person.java 会生成一个对应的class文件:Person.class运

2、行:java Person 注意:该类运行时会报一个错误: 说明:函数public staticvoid main(String args);是程序的入口。运用类时,虚拟机会自动调用该函数。2、方法的调用 Person.javaclass Person public void run() System.out.println(跑。); public static void main(String args) run(); 编译:javac Person.java 时报错: 分析错误原因:main方法是一个被static修饰的方法,那么这样的方法就叫静态方法,而我们定义的run方法是一个没有被s

3、tatic修饰的方法,即不是静态方法。意味着这两个方法不是同一级别的方法,所以在main方法中无法访问非静态方法run();解决的办法: 1、将main方法改为非静态的,但是不行,因为该方法是系统默认定义的。不能改。 2、只能改我们自定义的run方法。将该方法改为静态的。 Person.javaclass Person public static void run() System.out.println(跑。); public static void main(String args) run(); 编译:javac Person.java 生成了Person.class 文件运行:java

4、 Person 3、Java中的包的定义Java中不允许有“裸体类”,即类不能没有包的定义。上面的Person类就是一个裸体类。没有包的修饰。应改为: Person.javapackage com.test;public class Person public static void run() System.out.println(跑。); public static void main(String args) run(); 关键字package是定义包的。编译:javac Person.java 同样生成了class文件运行:java Person 程序报错了: 因为程序中类的名字多了包

5、的约束了。所以我们访问该类时,要以全路径访问,即包的完整路径加类的名称来访问类。运行:java com.test.Person 依然报错,说类找不到。分析: 看javac 有一个-d参数,表示类生成的存放路径。 从上图可以看出:我们生成的类(Person.class)没有存放到com/test包中。所以无法正常访问。如何修改?我们应重新编译源文件:Person.java编译:javac d D:/test/src Person.java 生成了类:com.test.Person 查看类文件的生成情况: 打开com文件夹及其子文件夹test 运行:java com.test.Person 此时程

6、序运行正常。说明:带了包的源文件在编译时,要带上类的生成路径。即用-d参数来编译。访问该类时,也要带上包类访问。说明一个类的完整名称,要有包。4、静态方法的调用再编写一个测试类: Test.javapackage cn.test2;public class Test public static void main(String args) /想调用Person类中的静态方法:run() run();/模仿在Person类的main方法中的调用方式调用。 编译:javac d D:/test/src Test.java 报错。 分析错误原因:因为我们想调用的run方法是com.test.Pers

7、on类的。所以我们不能直接像在Person类中一样来访问run方法,我们应该全名称类访问。既是带是该方法所在的包的类来访问。所以Test.java文件的内容应改为: Test.javapackage cn.test2;public class Test public static void main(String args) /想调用Person类中的静态方法:run() /run();/错误,要全名称访问。 com.test.Person.run(); 编译:javac d . Test.java 生成Test的类,注意:“.”是相对路径,既是当前路径,等同于“D:/test/src”路径。

8、 运行:java cn.test2.Test 上面程序说明:静态方法访问原则:1、 如果调用该静态方法的代码块和该方法在同一个类中,类名可以省略。2、 如果调用代码块和被调用方法不在同一个类中,且包也不同,那么必须在被调用方法前写上全路径,即”包名.类名.方法名”的形式访问。5、访问权限控制语句的使用publicprotected默认(不写)private所有类中都可以访问不仅可以在同一个包中的类内访问,还可以在子类中访问包访问权限类访问权限1、public权限 在整个系统中的任意类中都可以访问,该关键字可以修饰类,方法,属性。修饰类的话,表示该类是一个公共类;修饰方法,表示该方法是公共方法,

9、可以在任意类中使用,修饰属性表示该属性可以在任意类中访问。 Person.javapackage com.test;public class Person public static String name = Person name.; public static void run() System.out.println(跑。); public static void main(String args) run(); Test.javapackage cn.test2;public class Test public static void main(String args) /想调用Pe

10、rson类中的静态方法:run() /run();/错误,要全名称访问。 com.test.Person.run(); String n = com.test.Person.name; System.out.println(n); 注意:当前我们编写的两个类,不是在相同的包中定义的。我们想在Test中访问Person的公共属性和公共方法。 程序执行结果说明访问正常。将上面的Person.java中的类修饰符public去掉。然后编译并访问。报错是:“Exception in thread main java.lang.IllegalAccessError” 说明如果类不是公共的,即使它的属性和

11、方法都是公共的,依然无法访问。将Test.java的包改为和Person.java的包一样。然后编译并运行。程序能正常执行了。 由以上情况得出:如果一个类中的属性和访问即使都是public修饰的,但是类不是public修饰的,那么这些属性和方法依然无法访问,要想访问,必须调用者和被调用者在相同的包中。2、默认访问权限,就是不写任何访问修饰符将上面程序中Person.java中的属性和方法的public修饰去掉,把类的修饰符加上public。package com.test;public class Person static String name = Person name.; static

12、 void run() System.out.println(跑。); public static void main(String args) run(); 编译person.java文件,并访问Test类,结果正常。 接着将Test.java的包改为:cn.test2;package cn.test2;public class Test public static void main(String args) /想调用Person类中的静态方法:run() /run();/错误,要全名称访问。 com.test.Person.run(); String n = com.test.Perso

13、n.name; System.out.println(n); 编译Test.java文件,报错。 由以上情况说明:默认不写的访问权限,最大不能出包。一旦出包就无法访问了。3、private访问权限接着将person.java文件中的属性和方法的访问修饰符改为private;package com.test;public class Person private static String name = Person name.; private static void run() System.out.println(跑。); public static void main(String ar

14、gs) run(); 将Tess.java的包改为和Person.java的包一样。package com.test;public class Test public static void main(String args) /想调用Person类中的静态方法:run() /run();/错误,要全名称访问。 com.test.Person.run(); String n = com.test.Person.name; System.out.println(n); 编译报错: 说明:private修饰的只能在类中访问。4、protected访问权限 Person.javapackage co

15、m.test;public class Person protected static String name = Person name.; protected static void run() System.out.println(跑。); public static void main(String args) run(); Test.javapackage com.test;public class Test public static void main(String args) /想调用Person类中的静态方法:run() /run();/错误,要全名称访问。 com.test

16、.Person.run(); String n = com.test.Person.name; System.out.println(n); 可以访问。将上面的Test.java的包改为:cn.test2; Test.javapackage cn.test2;public class Test public static void main(String args) /想调用Person类中的静态方法:run() /run();/错误,要全名称访问。 com.test.Person.run(); String n = com.test.Person.name; System.out.print

17、ln(n); 编译报错: 上面的程序说明:如果两个类没有继承关系,且两个类不在同一个包中,那么protected的就无法跨包访问了。注意:protected的还可以在子类中访问,会在后面进一步介绍。5、封装 1)封装的定义:在java中主要指,类的成员变量私有化,然后通过getXXX和setXXX方法对成员变量进行读和写的操作。以保证安全性。我们可以在获取值或者改变值之前对方法调用者进行比如身份的验证,数据的合法验证等等操作。这样做能保证数据的安全性。6、方法的定义1、方法的组成方法:修饰符 返回值类型 方法名(形参列表)方法体:该方法要做的事情2、 例子无参方法:Test.java pack

18、age com.test;public class Test public static void print() System.out.println(该方法是一个公共访问级别的静态方法,没有参数。); 有参方法:Test.javapackage com.test;public class Test public static void print() System.out.println(该方法是一个公共访问级别的静态方法,没有参数。); public static int print(int start , int end) int sum = 0; for(;start=end;sta

19、rt+) if(start%2=0) sum+=start; return sum; 注意:Test类中的两个方法的名字完全相同,但是可以共存,但是参数不同,这是方法的重载。如果一个方法不返回任何值,那么该方法的定义处,要以void做为返回值类型出现,以满足方法定义的要求。Void也是java中的一个关键字,表示空。7、普通代码块1、普通代码块的定义在方法中出现的“”就叫普通代码块。 普通代码块中定义的变量的使用范围:就是当前普通代码块。出了该代码块就无法识别了。2、例子 Test.javapackage com.test;public class Test public static voi

20、d main(String args) int i = 9; /int i = 90; /变量的重复定义。 /int i = 90;/ 变量的重复定义。 int j = 90; System.out.println(j=+j);/可以正常访问。 /下面不可以正常访问。因为j的可视范围只在普通代码块中。 /System.out.println(j=+j); int j = 99;/这是可以的。 注意:main方法中定义的变量的使用范围是从定义处到main方法结束,而普通代码块中定义的变量的可视范围从定义处到普通代码块结束处。3、画内存图该图是针对上面Test.java中main方法的内存图。8、

21、静态代码块1、静态代码块的定义在类的内部,方法的外部,被关键字static修饰的代码块就叫静态代码块。 Test1.javapackage com.test;public class Test1 System.out.println(这是构造块,加载类时不会执行。); static System.out.println(这是静态代码块,加载类时会执行。); 上面的程序说明:静态代码块会被虚拟机自动调用,且是在main方法之前调用的。构造代码块在加载类时不会被调用。2、静态代码块的功能静态代码块的主要功能是为静态变量初始化的。Test1.javapackage com.test;public c

22、lass Test1 static int i;/系统会为该变量默认初始化为0 static System.out.println(i=+i); 编译运行: Test1.java 将Test1.java修改。package com.test;public class Test1 static System.out.println(i=+i); static int i;/系统会为该变量默认初始化为0编译:报错“非法向前引用” Test1.java 再次修改package com.test;public class Test1 static /System.out.println(i=+i);

23、i = 9; System.out.println(静态代码块执行了。); static int i;/系统会为该变量默认初始化为0编译并运行: 由以上三个程序得出结论:静态代码块就是对静态变量进行初始化的。如果我们刻意的将静态变量的声明和静态代码块的编写顺序打乱,系统依然是先执行静态变量的定义,而后执行静态代码块。3、定义时初始化和静态代码块初始化的顺序Test1.javapackage com.test;public class Test1 static i = 9; static int i = 8;/系统会为该变量默认初始化为0 static int j = 9;/int j; j =

24、 0; j = 9; static j = 10; /j = 10; public static void main(String args) System.out.println(i=+i); /i = 8; System.out.println(j=+j); /j=10; 编译并运行: 初始化的顺序和程序的执行顺序相同,都是由上向下执行。9、构造代码块1、构造代码块的定义 就是在类的内部定义的,且在方法的外部。“”前没有任何修饰符。2、例子Test2.javapackage com.test;public class Test2 System.out.println(这是构造代码块。);

25、编译并运行: 得到的结论是:它和静态代码块不一样,不会被虚拟机自动调用。3、构造代码块的功能 对非静态属性初始化。Test2.javapackage com.test;public class Test2 System.out.println(i=+i); int i;/虚拟机会默认为其初始化为0。 public static void main(String args) 编译:报“非法向前引用”错误。 将上面的程序修改:Test2.javapackage com.test;public class Test2 i = 9; /System.out.println(i=+i);/报错“非法向前

26、引用” int i;/虚拟机会默认为其初始化为0。 public static void main(String args) 编译并运行: 说明:构造代码块就是为非静态属性初始化的。将上面的程序进一步修改:Test2.javapackage com.test;public class Test2 i = 9; /System.out.println(i=+i);/报错“非法向前引用” int i = 8;/虚拟机会默认为其初始化为0。 int j = 9; j = 10; public static void main(String args) /非静态属性如何访问: System.out.p

27、rintln(i=+new Test2().i ); System.out.println(j=+new Test2().j ); 编译并运行: 上面的三个程序说明:属性的定义和构造代码块的执行顺序是:先定义变量,后执行构造代码块。但是初始化的顺序依然是由上向下执行。10、如何访问非静态方法和非静态属性我们不能够像访问静态方法和静态属性一样来访问非静态的方法和属性。Test3.javapackage com.test;public class Test3 int i = 9; void print() System.out.println(非静态方法。); public static void

28、 main(String args) System.out.println(Test3.i); Test3.print(); 编译:报错“无法从静态的上下文环境中访问非静态的属性或方法。” 1、如何调用非静态的属性和方法 我们要想访问非静态的,必须要实例化对象,然后通过对象,或对象的引用来访问该类型的属性或方法。2、如何实例化对象 如何实例化对象? 用 “new”关键字 加类名称加(),来实例化对象。Test3.javapackage com.test;public class Test3 int i = 9; void print() System.out.println(非静态方法。); public static void main(String args) new Test3().

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

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