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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

91 第九天 魔乐java基础视频学习笔记Word文档格式.docx

1、Object是所有类的父类,toString()属于方法的覆写,对象打印时默认调用。2、异常的捕获和处理标准格式:try、catch、finally、throw、throws的应用;3、包的定义及使用,没有包的类根本就不存在;4、四种访问控制权限:private、default、protected、public;5、命名规范。6、有意思的程序:package cn.mldn.demo;abstract class A /抽象类 public A() /构造方法 public abstract void print();class B extends A private int data = 1

2、0 ; public B(int data) this.data = data ; public void print() /抽象方法 System.out.println(data= + this.data);public class TestDemo public static void main(String args) throws Exception new B(100); /实例化子类对象 “data =0”,这种程序纯粹是为了研究技术而出现的,这道程序要想解决问题:在之前讲解构造方法的时候曾经讲解过,一个类只有构造执行完之后,所有的属性才回为其分配默认值(int data = 1

3、0),这个10是在构造执行完毕之后赋予的,可是按照子类对象实例化的原则来讲,子类在实例化对象之前会默认调用父类之中的构造,为父类中的属性初始化,之后再调用子类自己的构造为子类的属性初始化。2.2、本次预计讲解到的知识点1、JDK1.5的新特性;2、理解泛型、枚举、Annotation的主要作用(看即可,先不去使用)。3、具体内容(理解) Java的发展从1995年开始经历了许多的过程,但是其中有三个最具代表性的JDK版本: 1995年推出的JDK1.0:标志着Java彻底产生了;1998年推出的JDK1.2:加入了javax.swing组件,这是主要新特性;2005年推出的JDK1.5,标记为

4、tiger:出现了许多一直延续到今天的新特性; 在几乎所有的书上,把JDK1.5的新特性都会结合一些系统的类库来讲解,但是本次是将所有的内容单独取出来进行的讲解,所以难免会出现理解上的困难。3.1、可变参数 在讲解可变参数之前,首先来思考一个问题:如果说现在要实现若干个整型变量的相加操作,问,此方法该如何设计?使用数组接收,因为参数个数不确定,而按照之前的所学,只能使用数组完成。 System.out.println(add(new int 1,2,3); public static int add(int data) int sum = 0 ; for(int x = 0 ; x data.

5、length ; x +) sum += datax ; return sum ; 以上的确实现了技术要求,但是现在有一个新的问题产生了:如果按照题目的要求,应该是可以任意的传递多个数据,但是以上实际上装的是一个数据,只不过一个数据使用数组的形式封装,那么为了更好的解决这个问题,可以使用JDK1.5可变参数形式来进行操作。Public static final返回值类型 方法名称(参数类型变量) return 返回值; 发现现在在进行方法参数定义的时候有了一些变化,而这个时候的参数可以说就是数组形式 System.out.println(add(1,2,3); System.out.print

6、ln(add(); public static int add(int .data) /可变参数 有了可变参数,在日后进行方法调用的过程之中,就可以比较直观的传递任意多个参数,但是以上的操作在开发之中不建议使用,最好别用。3.2、foreach输出 首先需要解释的是:foreach并不是新的概念,最早是在.NET中提出来的,所谓的foreach可以理解为增强性的for循环,下面来回顾一下最早的for循环。 int data =new int 1,2,3,4,5,6; System.out.println(sum); 但是有了foreach之后,那么对于数组或者是集合的输出就有了新的支持,语法如

7、下:for (数据类型 变量 : 数组 | 集合) /操作代码 这表示通过自动的方式将数组之中的每一个元素赋值给变量,而后在for循环的方法体之中进行操作。 for(int x : data) /自动循环,将每一个元素赋给x sum += x ; 对于这种for循环依然只是要求会使用,能看懂就行,不过个人建议:最好别用。3.3、静态导入 如果说现在要想导入一个不同包的类的方法,那么肯定使用import完成,即:如下是之前所采用的格式。范例:定义一个MyMath类package cn.mldn.util;public class MyMath public static int add(int

8、x ,int y) return x + y ; public static int sub(int x , int y) return x - y ; public static int div(int x , int y) return x / y; public static int mul(int x , int y) return x * y ; 这个类之中的方法全部都属于static型的方法,而按照之前的方式如果要使用这个类,操作形式如下:按照之前的方式来使用MyMath类import cn.mldn.util.MyMath;加法操作: + MyMath.add(10,20);减法

9、操作: + MyMath.sub(20,10); 但是在JDK1.5之后,如果一个类之中的全部方法都是static型的,则可以使用如下的语法进行静态导入:import static 包.类.*; 表示的是将这个指定类之中的全部方法导入进来,最后就好像这些方法全部是在主类之中定义的方法一样。import static cn.mldn.util.MyMath.*; + add(10,20); + sub(20,10); 这种比较难受的语法,也只是出现在讲课之中,是不会建议使用。3.4、JDK1.5三大主要新特性泛型3.4.1、泛型的引出(重点) 下面首先通过一个简单的分析来研究一下泛型出现的主要目

10、的,例如:现在要求定义一个表示坐标的操作类(Point),这个类可以表示三种类型的坐标:整数坐标:x = 10 、 y = 20 ;小数坐标:x = 10.1 、 y =20.3;字符串数据:x = “东经100度” 、 y = “北纬20度”。 类之中如果要想保存以上的数据,一定需要定义x和y两个属性,而这两个属性可以接收三种数据类型,那么只能使用Object类来定义会比价合适,这样会发生如下的几种转换关系:整数:int 自动装箱为Integer 向上转型为Object ;小数:double 自动装箱为Double 向上转型为Object ;字符串:字符串 向上转型为Object。定义Poi

11、nt类,使用Object作为属性类型class Point private Object x ; private Object y ; public void setX(Object x) this.x = x ; public void setY(Object y) this.y = y ; public Object getX() return x ; public Object getY() return y ; 下面开始设置不同的数据类型,以测试程序。设置整型 Point point = new Point(); point.setX(10); point.setY(20); int

12、x = (Integer) point.getX(); int y = (Integer) point.getY();X的坐标是:+x+,Y的坐标是:+y);设置小数 point.setX(10.3); point.setY(20.4); double x = (Double) point.getX(); double y = (Double) point.getY();设置字符串 point.setX(东经100度); point.setY(北纬20度 String x = (String) point.getX(); String y = (String) point.getY(); 看起

13、来现在的功能都实现了,并且根据之前所学的内容,也只能做到这些了,但是本程序是否有问题? 本程序解决问题的关键就在于Object类,所有的类型都可以向Object转换,但是成是Object,败也是Object。 /此处设置成int型(Integer型) 这个时候并没有出现任何的语法错误,因为数组10被装箱成了Ingeger,可以使用Object接收,从技术上而言,本操作没有问题,但是从实际来讲,数据时有错误的,因为没有统一,所以在取得数据并且执行向下转型的过程之中就会出现如下的错误提示信息:Exception in thread main java.lang.ClassCastException

14、:java.lang.Integer at cn.mldn.demo.TestDemo.main(TestDemo.java:23) 所以,就可以得出一个结论:以上的代码存在了安全隐患,并且这一安全隐患并没有在程序编译的过程之中检查出来,而现在就可以利用泛型来解决这种尴尬的问题? 泛型:类之中操作的属性或方法的参数的类型不在定义的时候声明,而是在使用的时候动态设置。class Point private T x ; private T y ; public void setX(T x) /T:Type public void setY(T y) public T getX() public T

15、 getY() 此时就表示point类之中的x和y两个属性的类型暂时还不知道,等待程序的时候动态配置。使用泛型 Point point = new Point(); String x = point.getX(); String y = point.getY(); 此时没有了向下转型的这些操作关系,那么程序就避免了安全性的问题,而且如果设置的类型不统一,在程序编译的过程之中也是可以很好的解决了,直接回报出语法错误。 而当用户在使用Point类声明对象的时候没有设置泛型,那么程序在编译的过程之中会出现警告信息,而且为了保证程序不出现错误,所有的类型都将使用Object进行处理,使用泛型可以很好的

16、解决数据类型的统一问题。 但是在此处需要提醒的是,JDK1.5和JDK1.7在定义泛型的时候是稍微有些区别的。JDK1.5的时候声明泛型对象操作。Point 以上是JDK1.5的语法,在声明对象和实例化对象的时候必须都同时设置好泛型类型。JDK1.7的时候简化了 point = new Point (); 这个时候实例化对象时的泛型类型就是通过声明时的泛型类型来定义了。3.4.2、通配符(重点) 泛型的出现的确是可以解决了数据类型的统一问题以及避免了向下转型操作,但是又会带来新的问题,下面先通过一段程序来观察一下会产生什么问题?定义一个简单的泛型类class Message private T

17、 info ; public void setInfo(T info) this.info = info ; public T getInfo() return info ;使用以上的类对象执行引用传递 Message msg = new Message() ; msg.setInfo(Hello World print(msg); public static void print(Message msg.setInfo(100); /无法进行引用传递 发现这个时候的print()方法无法再接收Message对象的引用,因为这个方法只能够接收Message对象的引用,那么可以将print()方

18、法重载,换成Message。 temp) /出错 这个时候发现按照之前的方式根本就无法进行方法的重载,方法的重载没有说为一个类而定义的,因为方法重载的时候观察的不是泛型类型,而是类的名称,或者是数据类型的,那么现在就可以发现,这个给出了泛型类之后,就相当于将一个类又划分了若干个不同的小类型。 那么现在的问题:方法接收的参数问题又严重了,而且比之前使用对象多态性解决问题时出现的麻烦更大了,至少那个时候可以利用重载来接收一个类的所有子类对象,而现在呢连重载的机会都不给了。 这个时候,有人提出来了,干脆在定义的时候就别写泛型类型了。定义方法时不写上泛型类型 public static void print(Message temp) 虽然现在在print()方法的参数上出现了警告,但是现在的程序可算是正常了,但是新的问题又来了,问题就

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2