版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、java基础部分笔记(全)java基础部分笔记(全)note(javaoo_01)=面向对象(Object Oriented,简称OO)=1.什么是对象?在现实生活中,相当于是东西,指的是一个具体的实例,不管是看的见,看不见的,具体的,抽象的,都可以成为一个对象,即:万物皆对象2.什么是面向对象?一种编程规范,也是一种编程技术,是一个抽象的思维方式,指的是面向客观事物之间的关系,即对象与对象之间的关系.3.如何使用面向对象?根据客户提供的需求进行抽象出业务对象,然后对需求进行合理的分层,构建出相对独立的业务模块,然后设计业务逻辑,再利用面向对象的特点(封装,继承,多态)来实现具体的业务,最后通
2、过整合,达到高内聚,低耦合的效果,从而满足客户的需求.5.面向对象中一些概念1)类 (引用类型) - 人类,动物2)对象(东西,具体一个实例) -周启,麦兜3)变量(引用,代词) - 某个人,某头猪4)行为动作(方法)5)封装:封装的目的就是为了程序的保密性,将核心的业务进行隐藏,不让别人轻易看到,然后提供一个对外操作的接口,可以让别人去使用这个程序,比如计算机.6)多态:一种行为动作在宾语不同的情况下发生改变的情况.(同一种事物在不同情况下发生改变)比如:打人,打牌,打酱油.7)继承:子类继承父类属性及方法.8)成员属性:类的属性,如名字,性别6.构造器(构造方法)就是用来描述对象的创建过程
3、. 原理(参数)制碗工厂(类) - 碗(对象)生产线(构造器)例:写个类,描述点.注意:1)构造方法的方法名跟类名一致.2)构造方法不能声明返回类型.3)构造方法可以有多个,之间的区别在于参数不一样.4)java会默认生成一个无参数的构造器供开发者使用,但如果开发者重新写了有参的构造器,这个默认的无参构造器会消失,那么,一般情况下,会在写有参构造器的时候,顺带写上无参构造器.7.实例化就是借助构造器来产生一个新对象(使用关键字new).8.this关键字this是当前对象的引用,指的是对象本身.this()代表调用本类的其他构造器,以达到简化代码的目的.并且,this()只能出现在方法的第一行
4、.-方法语法:修饰符 返回类型 方法名(参数列表)9.方法的重载方法名相同,参数不同,这是多态的一种体现.注意:方法重载与返回值无关,与参数有关练习:1.给Point类一些重载的方法:Math.sqrt()1)原点与点的距离(无参数)2)点与点的距离(参数:x,y)3)点与点的距离(参数:Point对象)2.写一个Cicye类,属性:圆心,半径,计算圆面积的方法,点是否在圆内的方法Math.PI3.写一个Person类,里面有如下属性:编号,姓名,性别,年龄,婚否,身份证号,地址,电话,伴侣姓名写一个方法,方法是一个结婚方法.需要进行合理判断4.面向对象的方式:ez开船去钓鱼岛钓鱼Person
5、 Ship Island Fishname name name name p typedriver(Ship s) go(Island i) fishing(Fish f)作业:1)张三,王五,李四打牌,模拟洗牌,发牌Card 牌String num;String type;Card cards = new Card54;2)写一个Rectangle类,属性:顶点,长,宽,判断点是否在矩形内java基础部分笔记(全)note(javaoo_02)1.值传递:基本类型的值传递,传递的是自己本身的值的复制.引用类型的值传递,传递的是自己的内存地址值的复制.2.继承(extends)用于表示概念上具
6、体化延续的具体概念特征:1)子类继承父类的所有属性及方法.2)构造器不能继承3)子类构造器一定会调用父类的构造器.默认调用无参的构造器.如果需要调用父类有参构造器,使用super关键字来指定调用哪个父类构造器.super:指定父类用来调用父类的方法以及属性.特征:1)super的使用跟this基本一样.this:本类资源;super:父类资源2)super()与this()一定要写在代码的第一行.super()与this()不能同时使用.3.实例化过程详解:step1:首先检索子类及父类字节码文件有没有被加载,如果没有被加载,则使用懒加载进行加载(有且只加载一次),如果被加载了,则直接使用.s
7、tep2:为类里面的属性,从父类递归到自身进行属性的内存的空间的划分,并且为所有的属性进行初始化(零式化).step3:进行属性的赋值.step4:从父类到子类递归调用默认构造器.作业: 1、写一个Question.java的类,里面有题号id和题干text; 2、写一个ChoiceQuestion.java的类,它是Question的子类,里面有选项options和打印的方法(print)和一个检查答案正确性的一个方法(check(String answer);3、写两个ChoiceQuestion的子类,分别是SingleChoice.java和MulChoice.java,这两个方法里面
8、分别对check方法进行了重写,他们里面各有各自的answer这个属性;4、写一个PaperDemo.java的类,使用之前的类进行一个试卷类的书写,要求能够写入两个单选题跟两个多选题,并且能够使用控制台输入答案的形式来进行题目的打印和答案的判断4.方法的覆盖(重写):发生在有继承关系的子类里面,表示子类把父类的某一个方法进行重新定义.Fathersay()syso(1)Son extends Fathersay(int x)say()syso(2)run()main()Father f = new Son();f.say(1);作业:定义图形(Shape)及其子类:设计图形(Shape)类及
9、其子类(Circle、Rectangle) 1) Shap属性:Point p 代表图形位置 2) Shape提供计算面积方法area,子类(Circle、Rectangle)覆盖父类area方法 3) Shape提供检查是否包含指定坐标的方法contains,子类覆盖 java基础部分笔记(全)note(javaoo_03)1.访问控制符概念:这种修饰符是用来控制它所修饰变量,方法,以及类的访问作用域类内 包内 子类 任意public protected default private 注意:1)一个java文件,只允许出现一个public修饰的类.2)实体类中修饰属性使用private,为
10、了进行封装.对属性的访问,提供get,set方法.2.JavaBean规范(POJO)好处:代码容易阅读,减少犯错的可能.规范内容:1)必须要有包;2)类中必须有无参构造器;3)使用get,set方法进行属性的访问以及赋值.属性使用private修饰4)实现序列化.-对打游戏英雄Hero属性:姓名name生命值live进攻指数(1-10)attack防御指数(1-10)defence行为:进攻attacking参数:进攻指数进攻指数暴击:1-5:20%概率 杀伤值*26-10:40%概率 杀伤值*2返回:总的杀伤值防御defencing参数:防御指数防御成功:1-5:20%概率 防御成功6-1
11、0:40%概率 防御成功返回:是否防御成功游戏Game启动:start进行对打wolf(hero1,hero2)wolf(hero2,hero1)对打:wolf(进攻方,防御方)作业:描述汽车行驶过程,行驶过程中的状态报警.水箱类WaterBox 发动机类 Engine汽车类Car水量waterField水箱 温度t发动机温度t行为:油量oil启动()行为:停止()行驶()报警(油量)cail报警(水箱)3.多态动态绑定引用类型的类型转换:向上转型:属于自动转换,从小类型往大类型进行转换向下转型:属于强制转换,从大类型往小类型进行转换AnimalDog extends AnimalCat ex
12、tends AnimalAnimal a = new Dog();Dog d = (Dog)a;instanceof 运算符结构: 变量名 instanceof 类型名结果为true,意味着变量指向的对象为该类型.注意:1)引用类型转换只能是有继承关系的子类和父类,并且符合逻辑.2)如果是父类的引用指向子类对象,那么父类的引用不能调用子类特有的属性及方法.作业:USB接口 开始连接 使用中 断开连接鼠标 键盘 摄像头java基础部分笔记(全)note(javaoo_04)1.static 修饰符可以修饰属性,方法,代码块,内部类特征:1)static修饰的资源,属于类资源.在类加载的时候,进行
13、静态资源的加载(只加载一次).2)static修饰的资源属于共享资源.类名.属性名 类名.方法名3)静态资源在内存中存放的方式以及生成时间和非静态资源不同.4)静态方法只能访问静态资源,但是非静态方法能访问静态和非静态资源.5)常见的类库中的静态方法.如:Math,System,Arrays2.final修饰符(最终的)可以修饰类,方法,变量,常量.特征:1)final修饰的类不能被继承.2)final修饰的方法不能被重写.3)final修饰的变量不能被改变.4)final与static一起组合使用修饰属性,称为常量.一般名称全大写.3.内存分析Java中运用内存可划分为:栈:stack,堆:
14、heap,代码区:code,静态常量池:pool4.抽象类(abstract)-抽象方法:概念:没有具体的方法业务逻辑,只是一个方法的概念.(即,只有一个行为动作的概念而没有具体实现).结构: 修饰符 abstract 返回值 方法名(参数列表);注意:1)抽象类不能实例化,只能通过子类实例化来获取对象.2)抽象类被继承,如果子类是具体类则必须实现父类的所有抽象方法,否则该子类也是抽象类.3)在项目开发阶段,抽象类被用于系统分析和设计.作业:分析运动员:运动员Player,球类运动员BallPlayer,游泳运动员swimPlayer,田径运动员RunPlayer属性:姓名name,性别sex
15、,年龄age,练习场所place动作:吃饭eat,跑run,跳jump,游泳swim5.接口(interface)接口语法:修饰符 interface 接口名特征:1)接口里面的方法,全都是抽象方法,接口里的变量都是常量.2)接口是特殊的抽象类.是用来表示一种纯功能定义.没有具体实现.3)接口不能实例化.只能通过子类的实例化来获取对象.4)子类实现接口,使用implements.5)接口和接口之间可使用extends来继承.练习:1.找对象2,31)要有蓝翔烹饪技术(厨师)2)会编写网站的编码能力3)能带LOL,上钻石4)要有幽默感2.接口:产品(getPrice) 抽象类:车(run sto
16、p) 具体类:QQ Benz public class Demo extends Test implements InterfaceDemo,InterfaceDemo11.String(字符串)1)概念:由双引号引起来的一串字符.2)String的底层是char数组. String表现形式三种:String,char和StringBuilder3)字符串比较:使用equals.=和equals之间的区别: 如果是引用类型,=用来比较内存地址值.equals用来比较字符串内容4)静态字符串:java在编译期间(javac),凡是字面量或者常量之间的运算都会完成,再运行时内存中进行产生.5)字符
17、串与char之间的转换:a.字符串转char数组:char c = str.toCharArray();b.char数组转字符串:String str = new String(c);6)由于String的底层是char的运算,所以它拥有下标, 跟数组一样,从0开始到str.length()-1. 7)API:参考手册中java.lang.Stringjava基础部分笔记(全)note(javaoo_05)2.Object对象类1)Object是所有类的基类(父类),java中的所有的类都是继承于Object,并且这是默认继承,不需使用extends.2)Object类下面,有些方法在写类的时
18、候,根据实际情况进行重写.比如:toString,hashcode,equals. a.equals:用来比较两个对象是否相等. public boolean equals(Object obj) if(obj=null)return false;if(this=obj)return true;if(obj instanceof Book)Book other = (Book)obj;return 相等的逻辑;return false;b.hashcode:在Object中,返回值是根据地址采用哈希算法得到一个int值,我们对hashcode的要求是让他能够在两个对象equals为true的时
19、候,他们的hashcode值相等,并且不能出现不相等的对象却有相同hashcode的情况.注意:hashcode方便写的话,按照上面的要求.如果麻烦就使用自动生成.c.toString:Object中,返回值是对象本身的包+类名+hashcode重写:public String toString() return ;3.StringBuilder和StringBuffer1)String和StringBuilder区别:a.String的绝大多数的方法返回的都是一个新的对象.但是StringBuilder返回的始终是自己本身.b.String:char+操作.(复制并且创建新的对象) -cha
20、r是不可变c.StringBuilder:char+对char的操作(处理当前数组)-char可变即StringBuilder的底层char数组的内容是可变的,如果长度不够,会自动进行扩容.2)StringBuilder API使用 参考文档java.lang.StringBuilder3)String与StringBuilder的互转:a.String-StringBuilderStringBuilder sb = new StringBuilder(str);b.StringBuilder-StringString str = sb.toString();4)StringBuilder和S
21、tringBuffer的区别:a.API基本一样,使用方式差不多.b.StringBuilder是JDK1.6之后的类,StringBuffer是1.0之后的(过时的)c.StringBuilder比StringBuffer效率略高,因为StringBuilder是不带锁的,StringBuffer是带了锁.d.StringBuilder是单线程安全,不同步,StringBuffer是多线程安全,同步.练习:计算String与StringBuilder,StringBuffer的效率.总结:如果使用少量的字符串数据运算,可以使用String.如果使用大量的数据,用StringBuilder,效
22、率高.如果对效率要求苛刻,直接操作char.4.正则表达式正则表达式是一种文本模式.描述在搜索文本是要匹配的一个或多个字符串.产品编号: XX-XX-12345 A-Z2-d8$A-z2-d5,8$语法: 以什么开始$:以什么结束:表示一个字符,如:abc,0-9,a-z,A-Z,a-zA-Zd:数字 等价于0-9D:非数字 等价于0-9 . : 任意一个字符* : 出现0次或多次+ : 出现1次或多次? : 出现或者不出现| : 或者 (ab|d) n: 出现n次n,: 至少出现n次n,m: 至少出现n次,最多出现m次.s: 表示空白.w: 表示字母,数字,下划线 等价于A-Za-z0-9_
23、练习:1.验证电话号码 +86 (+86s)?d11$2.验证邮箱 fu_long_flsina(.com|.cn|.net|.org|.gov)w+w+.(com)|(cn)|(net)|(org)|(gov)$3.验证用户名 只能出现数字,字母,下划线,只能以字母开头.618位.A-zw5,17$4.验证身份证 15位数字或18位,最后一位可以是Xd15$|d170-9X$(d15)|(d170-9X)$java基础部分笔记(全)note(javase_01)1.集合1)java中,集合就是一堆数据放在一起,可以看成一个容器.集合中的每个个体称为这个集合的元素.2)数学中集合操作在java
24、中运用:a.并:addAll()b.交:retainAll()c.差:removeAll()3)集合的分类:Collection|-List|-ArrayList:使用可变长数组进行实现的线性集合(查询效率高,增删操作效率低)|-LinkedList:使用双向链表实现的线性集合(查询效率低,增删操作效率高)|-Set|-HashSet|-TreeSet练习:写一个类似于千千静听的歌曲列表的业务操作的代码: a、写一个Song类,里面有歌名和歌手 b、写一个demo类,使用集合为容器,往里面插入一些歌曲 c、然后来进行一个人性化的操作, 里面有查看、追加、查找、删除、删除全部、退出等功能 控制台
25、版 : 贪吃蛇java基础部分笔记(全)note(javase_02) 1.迭代器1)概念:迭代器就是循环地去处理数据,即遍历.2)Iterator描述的一个顺序结构,并且里面有一个游标的概念,游标默认在第一个元素之前,调用方法hasNext()可以检查游标后面还有没有元素,使用next()方法可以让游标向后移动并返回当前指向的元素.Iterator it = list.iterator();while(it.hasNext()Object obj = it.next();3)凡是对集合的操作,使用Iterator.4)在使用Iterator的过程中,不能使用集合对象的add和remove方法
26、,如果要删除,使用it.remove();5)next()方法是必须的.练习:Iterator和for循环的效率对比.结论:在使用ArrayList的时候,for循环的效率略高于Iterator.但在使用LinkedList时,for循环效率大大被降低,所以,在遍历集合时,使用Iterator.ArrayList和Vector:ArrayList:线程不安全,不同步(异步),速度稍快,没过时.Vector:线程安全,同步(带锁),速度稍慢,过时.2.HashSet是一个无序并且不允许重复但是可以放null值的集合.3.HashMap概念:基于哈希表的 Map 接口的实现迭代map:Set ke
27、ySet = map.keySet();Iterator it = keySet.iterator();while(it.hasNext()Object key = it.next();Object value = map.get(key);练习:1、有如下的E-mail:,12354,fu_long_,;将这些email地址的用户名以及域名分开,分别放到一个HashMap中去,并打印;String str = http:/localhost:8080/login.dostr.substring(st
28、r.lastIndexOf(/)+1,str.lastIndexOf(.); 2、新建一个User类,里面有属性账号名和密码,然后新建一个UserDemo类,先往以键值对的形式往里面插一些数据,然后需要你能够通过控制台来进行用户的登录,如果输入的用户不存在,则提示该用户不存在并要求重新输入,如果用户名存在密码错误的话,则提示密码错误,并要求重新输入,如果都正确,则提示登录成功,欢迎XXX;3.进行一个字符串中字符出现次数的统计:String str = abcdabacfff;结果:出现了a b c d f次数 3 2 2 1 3a - 1b - 1c - 1a - 24.Collection
29、s集合工具类.5.Comparable和Comparator:Comparable:一个接口,这个接口是专门用于对实现他的类进行排序的,其中,它调用的是 comparaTo方法;比较规则:可以对长度进行比较,也可以按照unicode值分不同的情况来进行比较,并且它的实现要跟equals保持一致,即,若equals为true,则比较为0;注意:不管是数组还是集合,他们的排序都是在底层调用了Comparable里面的comparaTo 方法来进行比较之后的排序结果。 Comparator:一个接口,同时也是一个比较工具,可以用于用户进行自定义的比较规则,注意 了,这是一个临时的比较规则,不是系统默
30、认的;集合与数组:特点:1、这两者是java中间很重要的两个容器;2、集合的部分子类的底层都是采用数组来进行实现的;3、数组是集合的基础;4、数组都是有序的,可以通过下标来进行对数组的操作(查找快);5、数组一般放的是包括String在内八大基本类型,集合如果不加泛型的话可以随便放任意对象;互转:数组转集合:Arrays.asList(); 注意:转换之后,不能使用add和remove的操作,需要对其进行构造器的复制的操作才行 ,所以,我们一贯的写法是: List list = new ArrayList(java.util.Arrays.asList(new String123,abc,哈哈
31、);集合转数组:直接调用集合的toArray方法进行转换,注意转换之后返回类型是一个Object类型的数组java基础部分笔记(全)note(javase_03)包装类:1、概念:讲基本类型进行封装,目的是为了更加方便地操作这些对象;2、作用:用于数据类型之间的转换和可以求出一些基本类型的值(比如范围的最大值,转换为十 六进制等等),主要是用于跟字符串之间的转换。3、基本类型 包装类 int Integer double Double floatFloat shortShort byteByte booleanBoolean longLong charCharacter 4、包装类的使用 类似
32、于使用类的使用,注意他们的构造器: Integer i = new Integer(); Integer i = 12;5、包装类与基本类型的转换 包装类-基本类型 : int a = Value(); 基本类型-包装类:Integer i = new Integer(a); 6、自动装包、自动拆包:概念:在JDK1.5之前,我们在处理集合的时候往往很麻烦,因为不能放基本类型 ,所以在JDK1.6的时候,Sun公司就发布了这种自动将基本类型和包装类 进行互转的功能 自动装包:自动把基本类型封装为包装类,即:Integer i = 123; 自动拆包:自动把包装类转为基本类型,即:in
33、t a = i+5; 练习:从控制台录入两次数据(String str = sc.next(), 先判断其是不是数字,若不是的话,打印错误,若是的话, 进行加、减、乘的运算; -内部类:1、概念:定义在类内部的类;2、根据内部类出现的位置,进行划分,化为4种内部类;a、静态内部类: 定义在类的内部并且以static修饰的类,它的访问方式有两种,一种是进行外部类导包然后 再进行内部类实例化,第二种是进行以.来代表层级关系的方式来进行内部类的实例化;内部 类不能访问外部类的非静态资源,并且可以重新声明一个外部类中已经声明过的变量,并且 这两个相同的变量的值互不影响;b、成员内部类: 与静态内部类相
34、比,少了static修饰词,然后可以在内部类中直接访问外部类的所有资源,在 对内部类进行实例化的时候,有点复杂:Noo noo = new Goo().new Noo();(注意给No o导包)。 c、局部内部类: 定义在方法里面的类,在局部内部类里面访问外部类的属性,需要在外部类属性上加一个修饰 词final,它适用于只存在于一个方法里的类; d、匿名内部类: 它是一个没有类名的特殊的局部内部类。 非常常见,也叫匿名类,可以写在任何地方,就像普通的语句一样去使用,更像是在创建对象 比如,Date date =new Date();(这里表示的是Date的子类的实例化); 匿名类是没有类名的,
35、表示对原类的继承同时为自身创建实例,里面就是继承之后的类体, 在类体中,可以使用所有类所拥有的语法(比如,继承,重写,添加变量); 匿名类因为没有类名,所以,它没有构造器; 匿名类不止可以表示为对父类的继承,还可以从抽象类、接口中去进行继承,但是必须实现 父类的所有抽象方法。 知识四个层面:了解 掌握熟悉精通java基础部分笔记(全)note(javase_04)时间类型:1、在JAVA当中,表示时间类型的有三种方式:long、Date、Calendar,后两者他们的底层都是long类型的计算;2、long:主要用于程序的效率计算,通过System.currentTimeMills()可以拿到
36、从1970年到现在的毫秒数,我们可以使用时间的运算来拿到年份和月份,但是注意的是年份为1970年到现在的时间,即:格林威治时间;3、Date:主要用于时间的展示,因为实例化之后的对象进行展示比较全面和美观,它里面多数的方法都因为闰秒的缘故而弃用了,所以我们一般不使用Date类型来进行时间的计算,有可能会出现误差;注意当你试用Date来获取年份的时候,是从1900年开始的,因为千年虫的缘故,获取月份的时候,是从0开始的;4、Calendar:由sun公司放弃使用Date之后专门开发的一个用于时间历计算的类,这个类是抽象类,不能直接对它进行实例化,但是Calendar专门提供了一个静态方法可以让它
37、获取对象-Calendar.getInstance();另外还可以通过它的子类的实例化来获取对象-new GregorianCalendar();这个类基本上是用于时间的计算的,它不用来进行展示,因为不好阅读,对于时间的计算,会常常用到三个方法:get、add和set,在使用者三个方法时,注意Calendar类的常量的运用;7.时间类型的转换long DateCalendar8.日期的格式化 本质上来说,日期的格式化就是String跟Date类型的转换, 需要借助一个SimpleDateFormat的类来进行日期的格式化; a、SimpleDateFormat的实例化:注意实例化的参数, 参数
38、列表中是放字符串的,其中大小写a到大小写z这一段 的所有字母都会自动识别为日期模式,请参照API,有两个 特殊的写法是MM表示的是月份,HH表示的小时。 b、有关时间模式的一些常用写法: yyyy-MM-dd yyyy-MM-dd HH:mm:ss yyyy/MM/ddc.字符串转日期:sdf.parse(str); 日期转字符串: sdf.format(date);练习: 通过控制台输入一个身份证号码, 然后获取到这个身份证号码的出生日期,然后转换为yyyy-MM-dd的Date形式进行输出,然后计算这个身份证号码的年龄,要注意运算他的生日有没有过。作业:1.比如某个超市他们进货的时候会将货
39、物的生产日期和保质期(月份)来录入一个系统中然后这个系统会在过期的前三个星期的那一周的周五进行提示,提示说要在本周的周六来进行促销活动,那么,请写出这个系统的代码;2.计算劳动合同的续签日:要求通过控制台输入你合同的签订日期以及年限,然后能够输出你下一次续签的具体时间,如果续签的当天正好是周末的话,那么顺延到下周一为续签时间。java基础部分笔记(全)note(javase_05)异常:1、概念:程序运行过程中所发生的不正常情况(行为方法的意外结果);2、由来:java以万物皆对象的思想将生活中的问题封装成了一个类到java中间来,然后这个类中 包含了各种各样的程序中所发生的问题情况; 3、问
40、题的分类: 可以根据问题的严重情况,分为两种:严重的和不严重; 对于严重的问题,java会强制性的停止程序,一般都是JVM发生了问题; 对于非严重的问题,我们可以通过异常处理机制来进行程序的控制; 严重的:java中通过error这个类进行描述,属于一种错误,一般不编写针对性的编码进行处理,属于JVM错误; 非严重的:java中通过Exception这个类来进行描述,对于这种问题,我们可以通过编写针对性的代码进行处理; 4、异常的体系:Throwable | |-Error |-OutOfMemeryError:堆溢出 |-StackOverflowError:栈溢出 | |-Exceptio
41、n |-checkedException:已检查异常 |-uncheckedException:不检查异常(RuntimeException)7、checkedException:检查异常 除了RuntimeException之外的所有异常,它代表的是你需要使用try-catch去进行检查的异常 一旦方法上声明出来,那么调用这个方法的地方就必须为此进行处理,若不处理,则报错,这 类异常一般情况下不是你书写代码的问题,而是一些比如你打印机里没纸啦,你能说是你打印 机坏了吗?,或者是你读取一个文件,但是这个文件被别人删掉了的问题。这些问题都是你在 书写代码的时候,无法预料的问题,那么,sun公司觉
42、得这类问题发生的话,只需要告诉我们 发生了什么事就行了,还是让程序继续运行; 8、uncheckedException:未检查异常 RuntimeException类下的所有子类,这类异常的发生,百分之百是你代码写错了,那么,sun 公司就不会对调用了声明这类异常的地方强制要求你进行异常处理,而是希望程序停掉,让你 去修改代码,因为这类错误在JVM看来,它是完全可以避免的,所以JVM不会强制性要求你去 用try-catch检查此类代码;5、异常的处理机制:a、try.catch.finally: 格式:try 需要检测的代码块 catch(需要捕捉的异常类+空格+变量) 异常的处理方式 fin
43、ally 始终会运行的部分 b、throws和throw: throws:throws代表声明一个异常有可能在这个方法中发生, 它一般写于方法签名之后,格式 为:throws+异常类名,如果 一个方法使用了throws来进行声明,那么调用它的代码 就 必须进行处理,要么就继续在调用的方法里进行声明, 让调它的方法去处理,要么 就进行try-catch处理掉; throw:常用于自定义异常的处理中,表示抛出某个异常, 注意的是,如果是检查异常的话,那么一旦抛出,方法上 就一定需要声明,并且调用的方法上,也一定需要进行处理, 如果是RuntimeException的话,那么,不强制要求你去声明,
44、如果你声明了,也不强制要求你去处理。6、多异常处理机制:一旦发生多个异常的话,我们通常做法是使用多个catch来进行捕获,这多个catch在书写上我们按照发生频率的高低从上往下书写,不要使用父类来收尾; 9、自定义异常 表示某些情况下,实际的操作是符合java的规范的, 但是不符合我们所要求的实际情况,对于这种不符合 实际情况的异常,需要我们自己去定义,我们称这类 异常为自定义异常; 10、IllegalArgumentException 这是一个比较特殊的异常类,他的父类是RuntimeException,所以使用它不需要进行声明以及 处理,它就是要让程序停掉,那么当我们某个自定义异常比较简
45、单的时候,可以不用书写,直接 使用这个异常类; 步骤: a、明确你的自定义异常的异常名,并且弄明白, 你需要继承的是哪个父类; b、明确地知道这个异常所发生的条件; c、写清楚自定义异常的异常信息。 练习:写一个两个数相乘的方法,然后写一个异常类, 当这两个数的其中一个为负数时,抛出异常并要求把 异常的错误信息人性化;再写一个自定异常,要求两者 相乘的数字只能在0-1000以内,否则程序停掉并抛出异常; 练习:在之前的Circye类中求面积的方法上加一个异常处理 的代码,当半径为负数时,抛出一个自定义异常,写好这个 异常类,并自己判断这个异常应该属于哪个父类,写好测试类。java基础部分笔记(
46、全)note(javase_06)IO流:1)File类:概念:sun公司提供的一个专门用于操作文件(或目录)的一个类,这个类可以实现对文件的增删改查的操作,但是无法对文件内容进行访问;如何使用:File类的实例化没有无参的构造器,需要在有参的构造器里放一个能表示路径的字符串文件路径的分类:a、相对路径:相对于eclipse下你新建java文件所在的那个工程目录而言;b、绝对路径:需要带上盘符,即完整的路径名称,这里需要注意的是,反斜杠需要成双出现或者打一个斜杠也可以;注意:在进行文件夹的删除时,如果文件夹内有文件的话,需要先删除这个文件夹里的所有文件后才能删除该文件夹;递归方法:自己调用自己
47、.直到最根上的方法结束再往上返回.作业:完成以下操作:1、查看相对路径下有没有一个叫test的文件夹,没有,则创建2、打印出刚刚创建的test文件夹的绝对路径,并且测试它是否为目录3、再测试以下实例化File的时候你输入的路径是不是绝对路径4、往test文件夹里创建一个hello.txt的文件,再创建一个 HelloWorld.java的文件5、查看以下test文件夹里的文件列表6、查看下hello.txt的绝对路径7、查看下HelloWorld.java的最后修改时间,注意时间类型8、删除hello.txt9、删除test的文件夹java基础部分笔记(全)note(db_01)-数据库-1、什么是数据库?数据库就是按照数据结构来组织、管理和存储数据的仓库;2、数据库的基本概念: a、数据库:DataBase(DB); b、数据库管理系统:DataBase Management System(DBMS); c、数据库管理员:DataBase Administrator(DBA); d、数据库系统:DataBase System(DBS);3.常用数据库的比较:Oracle:Oracle ,MysqlIBM:DB2微软:SQL/ServerSybase:Sybase中软:达梦DM.4.Oracle的安装:注意在安
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建立软硬件采购管理制度
- 石家庄人民医学高等专科学校《中学生认知与学习》2025-2026学年期末试卷
- 无锡太湖学院《国际营销概论》2025-2026学年期末试卷
- 上海应用技术大学《中医儿科学》2025-2026学年期末试卷
- 上海第二工业大学《临床药理学》2025-2026学年期末试卷
- 沈阳师范大学《旅游管理学》2025-2026学年期末试卷
- 上海电影艺术职业学院《中医外科学》2025-2026学年期末试卷
- 石家庄医学高等专科学校《金融管理学》2025-2026学年期末试卷
- 上海视觉艺术学院《政治学导论》2025-2026学年期末试卷
- 上海电机学院《金融监管学》2025-2026学年期末试卷
- 泰山学院中国地理课件第9章 东北区
- 作风建设培训课件民航
- 学堂在线 雨课堂 学堂云 科研伦理与学术规范 期末考试答案
- 二手车经纪人题库及答案
- 专项维修资金存放服务方案投标文件技术方案
- T/CAQI 96-2019产品质量鉴定程序规范总则
- 合同附件安全协议书
- 中考作文指导:记叙文审题立意之多角度立意
- 《条纹乖乖》游戏课件
- 2024年中国农业大学招聘笔试真题
- 上海市第一至十八届高一物理基础知识竞赛试题及答案
评论
0/150
提交评论