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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

4 第四天 魔乐java基础视频学习笔记.docx

1、4 第四天 魔乐java基础视频学习笔记1、课程名称:面向对象2、知识点2.1、上次课程的主要知识点1、String类的主要特点: String类的对象由两种实例化方式; |.方式一:直接赋值,只开辟一块堆内存空间,并且对象可以入池; |.方式二:构造方法,开辟两块堆内存空间,有一块将成为垃圾,不会自动入池,使用intern()方法手工入池; String对象的比较方法: |.=:比较的是两个字符串对象的内存地址数值; |.equals():字符串内容比较; 字符串对象一旦声明,则内容不可改变,改变的只能是字符串对象的地址指南。2、String类的常用方法:所有的方法要记住返回值类型、方法名称

2、、参数的类型及个数。 字符与字符串: |.【构造方法】将全部字符数组变为字符串:public String(char data); |.【构造方法】将部分字符数组变为字符串:public String(char data,int offset,int count); |.【普通方法】取得指定索引位置上的字符:public char charAt(int index); |.【普通方法】将字符串变为字符数组:public char toCharArray(); 字节与字符串: |.【构造方法】将全部字节数组变为字符串:public String(byte data); |.【构造方法】将部分字节

3、数组变为字符串:public String(byte data,int offset,int count); |.【普通方法】将字符串变为字节数组:public byte getBytes(); |.【普通方法】转码操作:public byte getBytes(String charset) throws UnsupportEncodingException 字符串替换: |.【普通方法】全部替换:public String replaceAll(String regex,String str); |.【普通方法】替换首个:public String replaceFirst(String

4、regex,String str); 字符串查找: |.【普通方法】查找是否包含指定的内容:public boolean contains(string str); |.【普通方法】查找指定字符串的位置:public int indexOf(String str); |.【普通方法】从指定位置向后查找指定字符串位置:public int indexOf(String str,int begin); |.【普通方法】由后向前查找指定字符串的位置:public int lastIndexOf(String str); |.【普通方法】从指定位置由后向前查找指定字符串位置:public int la

5、stIndexOf(String str,int begin); |.【普通方法】判断是否以指定的字符串开头:public Boolean startsWith(String str); |.【普通方法】从指定位置判断是否以指定的字符串开头:public Boolean startsWith(String str,int be); |.【普通方法】判断是否以指定的字符串结尾:public Boolean endsWith(String str); 字符串截取: |.【普通方法】从指定位置截取到结尾:public String substring(int begin); |.【普通方法】截取指定

6、范围:public String substring(int begin,int end); 字符串拆分: |.【普通方法】全部拆分:public String split(String regex); |.【普通方法】拆分成指定个数:public String split(String regex,int limit); 字符串比较: |.【普通方法】区分大小写比较:public boolean equals(String str); |.【普通方法】不区分大小写比较:public boolean equalsIngoreCase(String str); |.【普通方法】比较字符串大小:p

7、ublic int compareTo(String str); 其他方法: |.【普通方法】判断是否是空字符串:public boolean isEmpty(); |.【普通方法】取得字符串长度:public int length(); |.【普通方法】转大写:public String toUpperCase(); |.【普通方法】转小写:public String toLowerCase(); |.【普通方法】去掉左右空格:public String trim(); |.【普通方法】字符串连接:public String concat(String str); |.【普通方法】手工入池:

8、public String intern()。3、this关键字,三个主要功能: this.属性:表示本类中的属性; this.方法():本类方法、this():本类构造,但是本类构造在调用的时候只能放在构造方法的首行; ths表示当前对象。4、引用传递给了三个题目,这三个代码和之前讲解的对象引用操作要一起去理解;5、对象比较:是一个类自己本身所具备的功能。2.2、本次预计讲解的知识点1、static关键字;2、内部类;3、引用传递深入。3、具体内容3.1、static关键字(重点) 这个关键字一直在见到,从未被真正使用过,而在Java中,static关键字可以用于定义属性及方法。3.1.1、

9、使用static定义属性 在讲解static定义属性操作之前,首先编写如下程序。范例:现在定义一个表示北京人的操作类,所有人所在的城市都是北京。 class Person private String name ; private int age ; String country = 北京 ; public Person(String name , int age ) this.name = name ; this.age = age ; public String getInfo() return 姓名:+this.name+,年龄:+this.age+,城市:+this.country;

10、public class TestDemo public static void main (String args) Person per1 = new Person(张三,20); Person per2 = new Person(李四,21); Person per3 = new Person(王五,22); System.out.println(per1.getInfo(); System.out.println(per2.getInfo(); System.out.println(per3.getInfo(); 那么,以上的程序的内存分配图如下: 很明显,现在不管有多少个Person

11、对象,那么所有的country属性都应该是相同的内容,那么现在请思考一下,如果有一天时光穿越了,北京变为燕京了,这个时候如果Person类已经有5000W个对象产生了,你认为此时的代价是什么? 5000W个Person对象都要修改country内容,那么如果按照修改一个对象的country属性内容要花费1ms来计算,那么5000W个对象的修改时间是5000WS=很多分钟,那么现在就可以发现问题: country属性应该是一个公共的内容,但是以上代码是将其分配给了每一个对象; 对country属性维护的时候要考虑的对象太多了,也不方便。所以,如果要想将country与普通属性相区分,并且表示公共

12、的概念,则应该使用static关键字完成。class Person private String name ; private int age ; static String country = 北京 ;/此处暂时不封装 public Person(String name , int age ) this.name = name ; this.age = age ; public String getInfo() return 姓名:+this.name+,年龄:+this.age+,城市:+this.country; public class TestDemo public static v

13、oid main (String args) Person per1 = new Person(张三,20); Person per2 = new Person(李四,21); Person per3 = new Person(王五,22); per1.country = 燕京; System.out.println(per1.getInfo(); System.out.println(per2.getInfo(); System.out.println(per3.getInfo(); 那么,现在一个对象对country属性所做的修改,一定会影响到其他对象,但是这里有一个问题了,既然使用了st

14、atic定义的属性表示的是公共属性,那么如果现在由某一个对象修改是不合适的,应该由所有对象的集合的最大代表,就是类了,即:static属性最好的调用,是通过“类名称.static属性”的方式来完成。Person.country = 燕京;/类.属性 通过本程序,就应该清楚以下几点: 使用static定义的属性不在堆内存之中保存,保存在全局数据区; 使用static定义的属性表示类属性,类属性可以由类名称直接进行调用; static属性虽然定义了在类之中,但是其可以在没有实例化对象的时候进行调用(普通属性保存在堆内存里,而static属性保存在全局数据区之中);提示:在以后的开发之中,首先想到的

15、不是static属性,而是普通属性。3.1.2、使用static定义方法 除了使用static定义属性之外,方法上也可以使用static进行定义,那么很明显,使用static定义的方法也可以在没有实例化对象产生的情况下由类名称直接进行调用。class Person private String name ; private int age ; private static String country = 北京 ; public Person(String name , int age ) this.name = name ; this.age = age ; public static vo

16、id setCountry(String c) country = c; public static String getCountry() return country ; public String getInfo() return 姓名:+this.name+,年龄:+this.age+,城市:+this.country; public class TestDemo public static void main (String args) Person.setCountry(燕京); System.out.println(Person.getCountry(); Person per1

17、 = new Person(张三,20); System.out.println(per1.getInfo(); 以上的代码如果单独观察应该都不难理解,主要都是由于static定义的特殊性所决定的,但是现在的类之中就比较热闹了,因为分成了两派:static派、非static派,而对于方法的操作有如下两个定义: static定义的方法不能调用非static的方法或属性; 非static定义的方法可以调用static的属性或方法。讨论:为什么要有这样的限制呢? 使用static 定义的属性和方法,可以在没有实例化对象的时候使用; 非static定义的属性和方法,必须实例化对象之后才可以进行调用。3

18、.1.3、主方法 在讲解主方法之前,首先来思考一下小小的区别:在讲解Java方法定义的格式给过以下的格式:如果一个方法在主类之中定义,并且由主方法直接调用的时候,那么前面必须有public static。public static 返回值类型 方法名称(参数列表) return 返回值;范例:观察代码public class TestDemo public static void main (String args) print(); /直接调用 public static void print() System.out.println(Hello World !); 按照之前所学的概念来讲,

19、此时,表示的是一个static方法调用其他的static方法,但是如果这个时候的print()方法上没有static呢?所有的非static方法几乎都有一个特点:方法要由实例化对象调用。public class TestDemo public static void main (String args) new TestDemo().print(); public void print() System.out.println(Hello World !); 那么现在继续来观察主方法的组成,可以发现里面有很多的关键字: public:是一种访问权限,表示公共; static:此方法由类名称直接

20、调用,执行类:java类名称; void:主方法是一切的开始; main:系统规定的一个方法名称,执行类的时候默认找到此名称; String args:表示的是一些运行时参数,通过字符串接收。范例:接收参数public class TestDemo public static void main (String args) for ( int x = 0 ; x args.length ; x+ ) System.out.println(argsx); 所有的属性在执行类的时候使用空格分隔,例如:java TestDemo 参数 参数 参数 .但是,由于在默认情况下空格作为参数的分隔符,那么如

21、果现在要输入的参数本身之中存在空格呢?那么这些参数上就可以使用“”声明:java TestDmo “hello world” “hello world”。3.1.4、static关键字的使用 在实际的工作之中,使用static的原因有二: 希望可以在没有实例化对象的时候可以轻松的执行类的某些操作; 现在希望表示出数据共享的概念。范例:统计出一个类产生的实例化对象个数。 一个类肯定可以有多个实例化对象产生,那么现在希望增加一个统计操作,可以统计出一个类之中的所产生的实例化对象的个数。如果现在要产生新的实例化对象,则一定会调用类中的构造方法,所有可以在构造方法中增加统计,并且这个统计的变量,应该是

22、所有对象共享的, class Person private static int count = 0 ; public Person() System.out.println(对象个数:+ +count); public class TestDemo public static void main (String args) new Person(); new Person(); new Person(); 范例:为类的属性自动命名例如,在一个类之中可能会有多个构造方法,那么假设类之中存在了一个name属性,要求这个属性一定要有内容,即:如果用户调用了无参构造方法,那么name也需要有一个具体

23、的内容出现,所以这个时候就可以利用static完成。class Book private static int count = 0 ; private String title ; public Book() this(NOTITLE- + count+); public Book(String title) this.title = title ; public String getTitle() return this.title ; public class TestDemo public static void main (String args) System.out.println

24、(new Book().getTitle(); System.out.println(new Book(Java SE).getTitle(); System.out.println(new Book().getTitle(); 以上的两个代码只是为了说明static声明变量的特点,实际之中基本很少去这样使用,不过如果出现了类似的应用,应该能够反应出来其实现的基本原理。3.2、代码块(了解) 代码块是在程序之中使用“”定义起来的一段程序,而根据代码块声明位置以及声明关键字的不同,代码块一共分为四种:普通代码块、构造块、静态块、同步块(暂时不讲解)。3.2.1、普通代码块 普通代码块是定义在方法

25、之中的代码块public class TestDemo public static void main (String args) if(true) int x =10; /局部变量 System.out.println(x=+x); int x = 100 ;/全局变量 System.out.println(x=+ x); 普通代码块就是if取消public class TestDemo public static void main (String args) /普通代码块 int x =10; System.out.println(x=+x); int x = 100 ; System.

26、out.println(x=+ x); 几乎用不到的,知道就行了。3.2.2、 构造块 普通代码块是定义在方法之中的,而构造块是定义在类之中的代码块。class Person public Person() System.out.println(构造方法。); /构造块 System.out.println(构造块。); public class TestDemo public static void main (String args) new Person() ; new Person(); new Person(); 可以发现,构造块优先于构造方法执行,而且每当有一个新的实例化对象产生的

27、时候,就会出现构造块的执行。3.2.3、静态块 静态块也是定义在类之中的,如果一个构造块上使用了static关键字进行定义的话,那么就表示静态块,但是静态块要考虑两种情况: 情况一:在非主类之中定义的静态块:class Person public Person() System.out.println(构造方法。); /构造块 System.out.println(构造块。); static System.out.println(静态块。); public class TestDemo public static void main (String args) new Person() ; n

28、ew Person(); new Person(); 静态块。构造块。构造方法。构造块。构造方法。构造块。构造方法。可以发现,静态块优先于构造块执行,而且不管有多少个实例化对象产生,静态块只调用一次。情况二:在主类中定义的静态块。public class TestDemo static System.out.println(静态块。); public static void main (String args) System.out.println(Hello World); 在主类之中的静态块优先于主方法执行,那么既然静态块有这个特点,实际上就可以简单的修改一下。有意思的操作:不使用主方法输

29、出“Hello World”。public class TestDemo static System.out.println(Hello World); System.exit(1); 3.3、思考题 要求完成一个系统的登录程序,通过初始化参数输入用户名和密码,如果用户名是“mldn”,密码是“hello”,则显示欢迎光临的信息,如果不是则显示登录失败的信息。 设计的时候多考虑一下类的组成结构,以及可能出现的问题。 如果说现在什么都不考虑,代码编写如下:public class TestDemo public static void main(String args) if (mldn.equals(args0)&hello.equals(args1) System.out.println(用户登录成功!); else S

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

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