




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
java 基础部分笔记(全) java 基础部分笔记(全)note(javaoo_01) =面向对象(Object Oriented,简称 OO)= 1.什么是对象? 在现实生活中,相当于是东西,指的是一个具体的实例,不管是 看的见,看不见的,具体的,抽象的,都可以成为一个对象, 即:万物皆对象 2.什么是面向对象? 一种编程规范,也是一种编程技术,是一个抽象的思维方式,指的是 面向客观事物之间的关系,即对象与对象之间的关系. 3.如何使用面向对象? 根据客户提供的需求进行抽象出业务对象,然后对需求进行合理的 分层,构建出相对独立的业务模块,然后设计业务逻辑,再利用面向 对象的特点(封装,继承,多态)来实现具体的业务,最后通过整合, 达到高内聚,低耦合的效果,从而满足客户的需求. 5.面向对象中一些概念 1)类 (引用类型)-人类,动物 2)对象(东西,具体一个实例) -周启,麦兜 3)变量(引用,代词)- 某个人,某头猪 4)行为动作(方法) 5)封装:封装的目的就是为了程序的保密性,将核心的业务进行隐藏, 不让别人轻易看到,然后提供一个对外操作的接口,可以让别人去使用 这个程序,比如计算机. 6)多态:一种行为动作在宾语不同的情况下发生改变的情况.(同一种 事物在不同情况下发生改变)比如:打人,打牌,打酱油. 7)继承:子类继承父类属性及方法. 8)成员属性:类的属性,如名字,性别 6.构造器(构造方法) 就是用来描述对象的创建过程. 原理(参数) 制碗工厂(类) - 碗(对象) 生产线(构造器) 例:写个类,描述点. 注意: 1)构造方法的方法名跟类名一致. 2)构造方法不能声明返回类型. 3)构造方法可以有多个,之间的区别在于参数不一样. 4)java 会默认生成一个无参数的构造器供开发者使用,但如果 开发者重新写了有参的构造器,这个默认的无参构造器会消失, 那么,一般情况下,会在写有参构造器的时候,顺带写上无参构造器. 7.实例化 就是借助构造器来产生一个新对象(使用关键字 new). 8.this 关键字 this 是当前对象的引用,指的是对象本身. this()代表调用本类的其他构造器,以达到简化代码的目的.并且, this()只能出现在方法的第一行. -方法 语法: 修饰符 返回类型 方法名(参数列表) 9.方法的重载 方法名相同,参数不同,这是多态的一种体现. 注意: 方法重载与返回值无关,与参数有关 练习:1.给 Point 类一些重载的方法:Math.sqrt() 1)原点与点的距离(无参数) 2)点与点的距离(参数:x,y) 3)点与点的距离(参数:Point 对象) 2.写一个 Cicye 类,属性:圆心,半径,计算圆面积的方法 ,点是否在圆内的方法 Math.PI 3.写一个 Person 类,里面有如下属性:编号,姓名,性别,年龄,婚否, 身份证号,地址,电话,伴侣姓名 写一个方法,方法是一个结婚方法.需要进行合理判断 4.面向对象的方式: ez 开船去钓鱼岛钓鱼 PersonShipIslandFish namenamenamename ptype driver(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) 用于表示概念上具体化延续的具体概念 特征: 1)子类继承父类的所有属性及方法. 2)构造器不能继承 3)子类构造器一定会调用父类的构造器.默认调用无参的构造器. 如果需要调用父类有参构造器,使用 super 关键字来指定调用哪个 父类构造器. super:指定父类 用来调用父类的方法以及属性. 特征: 1)super 的使用跟 this 基本一样.this:本类资源;super: 父类资源 2)super()与 this()一定要写在代码的第一行.super()与 this()不能同时 使用. 3.实例化过程详解: step1:首先检索子类及父类字节码文件有没有被加载,如果没有被 加载,则使用懒加载进行加载(有且只加载一次),如果被加载了,则 直接使用. step2:为类里面的属性,从父类递归到自身进行属性的内存的空间的 划分,并且为所有的属性进行初始化(零式化). step3:进行属性的赋值. step4:从父类到子类递归调用默认构造器. 作业: 1、写一个 Question.java 的类,里面有题号 id 和题干 text; 2、写一个 ChoiceQuestion.java 的类,它是 Question 的子类, 里面有选项 options和打印的方法(print) 和一个检查答案正确性的一个方法(check(String answer) ) ; 3、写两个 ChoiceQuestion 的子类,分别是 SingleChoice.java 和 MulChoice.java,这两个方法里面分别对 check 方法进行了重写, 他们里面各有各自的 answer 这个属性; 4、写一个 PaperDemo.java 的类,使用之前的类进行一个试卷类的书 写,要求能够写入两个单选题跟两个多选题,并且能够使用控制台输 入答案的形式来进行题目的打印和答案的判断 4.方法的覆盖(重写): 发生在有继承关系的子类里面,表示子类把父类的某一个方法进行 重新定义. Father say()syso(1) Son extends Father say(int x) say()syso(2) run() main() Father f = new Son(); f.say(1); 作业: 定义图形(Shape)及其子类: 设计图形(Shape)类及其子类(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,为了进行封装.对属性的访问, 提供 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%概率 杀伤值*2 6-10:40%概率 杀伤值*2 返回:总的杀伤值 防御 defencing 参数:防御指数 防御成功: 1-5:20%概率 防御成功 6-10:40%概率 防御成功 返回:是否防御成功 游戏 Game 启动:start 进行对打 wolf(hero1,hero2) wolf(hero2,hero1) 对打:wolf(进攻方,防御方) 作业: 描述汽车行驶过程,行驶过程中的状态报警. 水箱类 WaterBox发动机类Engine汽车类 Car 水量waterField水箱 温度t发动机 温度t行为:油量 oil 启动()行为: 停止()行驶() 报警(油量)cail 报警(水箱) 3.多态 动态绑定 引用类型的类型转换: 向上转型:属于自动转换,从小类型往大类型进行转换 向下转型:属于强制转换,从大类型往小类型进行转换 Animal Dog extends Animal Cat extends Animal Animal a = new Dog(); Dog d = (Dog)a; instanceof 运算符 结构: 变量名 instanceof 类型名 结果为 true,意味着变量指向的对象为该类型. 注意: 1)引用类型转换只能是有继承关系的子类和父类,并且符合逻辑. 2)如果是父类的引用指向子类对象,那么父类的引用不能调用子类特有 的属性及方法. 作业: USB 接口 开始连接 使用中 断开连接 鼠标 键盘 摄像头 java 基础部分笔记(全)note(javaoo_04) 1.static 修饰符 可以修饰属性,方法,代码块,内部类 特征: 1)static 修饰的资源,属于类资源.在类加载的时候,进行静态 资源的加载(只加载一次). 2)static 修饰的资源属于共享资源. 类名.属性名 类名.方法名 3)静态资源在内存中存放的方式以及生成时间和非静态资源不同. 4)静态方法只能访问静态资源,但是非静态方法能访问静态和非 静态资源. 5)常见的类库中的静态方法.如:Math,System,Arrays 2.final 修饰符(最终的) 可以修饰类,方法,变量,常量. 特征: 1)final 修饰的类不能被继承. 2)final 修饰的方法不能被重写. 3)final 修饰的变量不能被改变. 4)final 与 static 一起组合使用修饰属性,称为常量.一般名称全大写. 3.内存分析 Java 中运用内存可划分为: 栈:stack,堆:heap,代码区:code,静态常量池:pool 4.抽象类(abstract) -抽象方法: 概念:没有具体的方法业务逻辑,只是一个方法的概念.(即,只有 一个行为动作的概念而没有具体实现). 结构: 修饰符 abstract 返回值 方法名(参数列表); 注意: 1)抽象类不能实例化,只能通过子类实例化来获取对象. 2)抽象类被继承,如果子类是具体类则必须实现父类的所有抽象方法 ,否则该子类也是抽象类. 3)在项目开发阶段,抽象类被用于系统分析和设计. 作业: 分析运动员: 运动员 Player,球类运动员 BallPlayer,游泳运动员 swimPlayer, 田径运动员 RunPlayer 属性: 姓名 name,性别 sex,年龄 age,练习场所 place 动作: 吃饭 eat,跑 run,跳 jump,游泳 swim 5.接口(interface) 接口语法: 修饰符 interface 接口名 特征: 1)接口里面的方法,全都是抽象方法,接口里的变量都是 常量. 2)接口是特殊的抽象类.是用来表示一种纯功能定义.没有 具体实现. 3)接口不能实例化.只能通过子类的实例化来获取对象. 4)子类实现接口,使用 implements. 5)接口和接口之间可使用 extends 来继承. 练习: 1.找对象 2,3 1)要有蓝翔烹饪技术(厨师) 2)会编写网站的编码能力 3)能带 LOL,上钻石 4)要有幽默感 2.接口:产品(getPrice) 抽象类:车(run stop) 具体类:QQ Benz public class Demo extends Test implements InterfaceDemo,InterfaceDemo1 1.String(字符串) 1)概念:由双引号引起来的一串字符. 2)String 的底层是 char数组. String 表现形式三种:String,char和 StringBuilder 3)字符串比较:使用 equals. =和 equals 之间的区别: 如果是引用类型,=用来比较内存地址值.equals用来比较字符串内 容 4)静态字符串: java 在编译期间(javac),凡是字面量或者常量之间的运算都会完成,再运行 时 内存中进行产生. 5)字符串与 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.String java 基础部分笔记(全)note(javaoo_05) 2.Object 对象类 1)Object 是所有类的基类(父类),java 中的所有的类都是继承于 Object,并且 这是默认继承,不需使用 extends. 2)Object 类下面,有些方法在写类的时候,根据实际情况进行重写. 比如: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 的时候, 他们的 hashcode 值相等,并且不能出现不相等的对象却有相同 hashcode 的情 况. 注意:hashcode 方便写的话,按照上面的要求.如果麻烦就使用自动生成. c.toString:Object 中,返回值是对象本身的包+类名+hashcode 重写: public String toString() return ; 3.StringBuilder 和 StringBuffer 1)String 和 StringBuilder 区别: a.String 的 绝 大 多 数 的 方 法 返 回 的 都 是 一 个 新 的 对 象 . 但 是 StringBuilder 返回的始终是自己本身. b.String:char+操作.(复制并且创建新的对象) -char是不可变 c.StringBuilder:char+对 char的操作(处理当前数组)-char可变 即StringBuilder 的底层 char 数组的内容是可变的,如果长度不够,会自 动进行扩容. 2)StringBuilder API 使用 参考文档 java.lang.StringBuilder 3)String 与 StringBuilder 的互转: a.String-StringBuilder StringBuilder sb = new StringBuilder(str); b.StringBuilder-String String str = sb.toString(); 4)StringBuilder 和 StringBuffer 的区别: a.API 基本一样,使用方式差不多. b.StringBuilder 是 JDK1.6 之后的类,StringBuffer 是 1.0 之后的(过时的) c.StringBuilder比StringBuffer效率略高,因为StringBuilder是不带锁的, StringBuffer 是带了锁. d.StringBuilder 是单线程安全,不同步,StringBuffer 是多线程安全,同步. 练习: 计算 String 与 StringBuilder,StringBuffer 的效率. 总结: 如果使用少量的字符串数据运算,可以使用 String. 如果使用大量的数据,用 StringBuilder,效率高. 如果对效率要求苛刻,直接操作 char. 4.正则表达式 正则表达式是一种文本模式.描述在搜索文本是要匹配的一个或多个字符串. 产品编号: XX-12345678 XX-12345 A-Z2-d8$ A-z2-d5,8$ 语法: : 以什么开始 $:以什么结束 :表示一个字符,如:abc,0-9,a-z,A-Z,a-zA-Z d:数字 等价于0-9 D:非数字 等价于0-9 . : 任意一个字符 * : 出现 0 次或多次 + : 出现 1 次或多次 ? : 出现或者不出现 | : 或者(ab|d) n: 出现 n 次 n,: 至少出现 n 次 n,m: 至少出现 n 次,最多出现 m 次. s:表示空白. w: 表示字母,数字,下划线 等价于A-Za-z0-9_ 练习: 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 位,最后一位可以是 X d15$|d170-9X$ (d15)|(d170-9X)$ java 基础部分笔记(全)note(javase_01) 1.集合 1)java 中,集合就是一堆数据放在一起,可以看成一个容器. 集合中的每个个体称为这个集合的元素. 2)数学中集合操作在 java 中运用: a.并:addAll() b.交:retainAll() c.差:removeAll() 3)集合的分类: Collection |-List |-ArrayList:使用可变长数组进行实现的线性集合(查询效率高,增 删操作效率低) |-LinkedList:使用双向链表实现的线性集合(查询效率低,增删操 作效率高) |-Set |-HashSet |-TreeSet 练习: 写一个类似于千千静听的歌曲列表的业务操作的代码: a、写一个 Song 类,里面有歌名和歌手 b、写一个 demo 类,使用集合为容器,往里面插入一些歌曲 c、然后来进行一个人性化的操作, 里面有查看、追加、查找、删除、删除全部、退出等功能 控制台版 : 贪吃蛇 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 方法, 如果要删除,使用 it.remove(); 5)next()方法是必须的. 练习: Iterator 和 for 循环的效率对比. 结论: 在使用 ArrayList 的时候,for 循环的效率略高于 Iterator. 但在使用 LinkedList 时,for 循环效率大大被降低,所以,在 遍历集合时,使用 Iterator. ArrayList 和 Vector: ArrayList:线程不安全,不同步(异步),速度稍快,没过时. Vector:线程安全,同步(带锁),速度稍慢,过时. 2.HashSet 是一个无序并且不允许重复但是可以放 null 值的集合. 3.HashMap 概念:基于哈希表的 Map 接口的实现 迭代 map: Set keySet = map.keySet(); Iterator it = keySet.iterator(); while(it.hasNext() Object key = it.next(); Object value = map.get(key); 练习: 1、有如下的 E-mail: abcd, 12354, fu_long_fl, tiantian; 将这些 email 地址的用户名以及域名分开, 分别放到一个 HashMap 中去,并打印; String str = http:/localhost:8080/login.do str.substring(str.lastIndexOf(/)+1, str.lastIndexOf(.); 2、新建一个 User 类,里面有属性账号名和密码, 然后新建一个 UserDemo 类,先往以键值对的形式 往里面插一些数据,然后需要你能够通过控制台来进行用户 的登录,如果输入的用户不存在,则提示该用户不存在 并要求重新输入,如果用户名存在密码错误的话, 则提示密码错误,并要求重新输入,如果都正确, 则提示登录成功,欢迎 XXX; 3.进行一个字符串中字符出现次数的统计: String str = abcdabacfff; 结果: 出现了 a b c d f 次数3 2 2 1 3 a - 1 b - 1 c - 1 a - 2 4.Collections 集合工具类. 5.Comparable 和 Comparator: Comparable:一个接口,这个接口是专门用于对实现他的类进行排 序的,其中,它调用的是 comparaTo 方法; 比较规则:可以对长度进行比较,也可以按照 unicode 值分不同 的情况来进行比较,并且它 的实现要跟 equals 保持一致,即,若 equals 为 true,则比较为 0; 注意:不管是数组还是集合,他们的排序都是在底层调用了 Comparable 里面的 comparaTo 方法来进行比较之后的排序结果。 Comparator:一个接口,同时也是一个比较工具,可以用于用户进 行自定义的比较规则,注意 了,这是一个临时的比较规则,不是系统默认 的; 集合与数组: 特点: 1、这两者是 java 中间很重要的两个容器; 2、集合的部分子类的底层都是采用数组来进行实现的; 3、数组是集合的基础; 4、数组都是有序的,可以通过下标来进行对数组的操作(查找快) ; 5、数组一般放的是包括 String 在内八大基本类型,集合如果不加泛型的 话可以随便放任意对象; 互转: 数组转集合:Arrays.asList(); 注意:转换之后,不能使用 add 和 remove 的操作,需要对其进行构造器 的复制的操作才行 ,所以,我们一贯的写法是: Listlist=newArrayList(java.util.Arrays.asList(new String123,abc,哈哈); 集合转数组:直接调用集合的 toArray 方法进行转换,注意转换之后返回类 型是一个 Object 类型的数组 java 基础部分笔记(全)note(javase_03) 包装类: 1、概念:讲基本类型进行封装,目的是为了更加方便地操作这些对象; 2、作用:用于数据类型之间的转换和可以求出一些基本类型的值(比如范围的 最大值,转换为十 六进制等等) ,主要是用于跟字符串之间的转换。 3、基本类型包装类 intInteger doubleDouble floatFloat shortShort byteByte booleanBoolean longLong charCharacter 4、包装类的使用 类似于使用类的使用,注意他们的构造器: 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; 自动拆包:自动把包装类转为基本类型,即:int a = i+5; 练习:从控制台录入两次数据(String str = sc.next(), 先判断其是不是数字,若不是的话,打印错误,若是的话, 进行加、减、乘的运算; -内部类: 1、概念:定义在类内部的类; 2、根据内部类出现的位置,进行划分,化为 4 种内部类; a、静态内部类: 定义在类的内部并且以 static 修饰的类,它的访问方式有两种, 一种是进行外部类导包然后 再进行内部类实例化,第二种是进行以.来代表层级关系的方式 来进行内部类的实例化;内部 类不能访问外部类的非静态资源,并且可以重新声明一个外部 类中已经声明过的变量,并且 这两个相同的变量的值互不影响; b、成员内部类: 与静态内部类相比,少了 static 修饰词,然后可以在内部类中 直接访问外部类的所有资源,在 对内部类进行实例化的时候,有点复杂: Noonoo=new Goo().new Noo();(注意给 No o 导包) 。 c、局部内部类: 定义在方法里面的类,在局部内部类里面访问外部类的属性, 需要在外部类属性上加一个修饰 词 final,它适用于只存在于一个方法里的类; d、匿名内部类: 它是一个没有类名的特殊的局部内部类。 非常常见,也叫匿名类,可以写在任何地方,就像普通的语句 一样去使用,更像是在创建对象 比如,Date date =new Date();(这里表示的是 Date 的子类的实 例化); 匿名类是没有类名的, 表示对原类的继承同时为自身创建实例, 里面就是继承之后的类体, 在类体中,可以使用所有类所拥有的语法(比如,继承,重写, 添加变量); 匿名类因为没有类名,所以,它没有构造器; 匿名类不止可以表示为对父类的继承,还可以从抽象类、接口 中去进行继承,但是必须实现 父类的所有抽象方法。 知识四个层面: 了解 掌握 熟悉 精通 java 基础部分笔记(全)note(javase_04) 时间类型: 1、在 JAVA 当中,表示时间类型的有三种方式: long、Date、Calendar,后两者他们的底层都是 long 类型的计算; 2、long:主要用于程序的效率计算,通过 System.currentTimeMills() 可以拿到从 1970 年到现在的毫秒数,我们可以使用时间的运算来拿到年份 和月份,但是注意的是年份为 1970 年到现在的时间,即:格林威治时间; 3、Date:主要用于时间的展示,因为实例化之后的对象进行展示比较全面 和美观,它里面多数的方法都因为闰秒的缘故而弃用了,所以我们一般不使 用 Date 类型来进行时间的计算,有可能会出现误差;注意当你试用 Date 来获取年份的时候,是从 1900 年开始的,因为 千年虫的缘故,获取月份的时候,是从 0 开始的; 4、Calendar:由 sun 公司放弃使用 Date 之后专门开发的一个用于时间历计算的 类, 这个类是抽象类,不能直接对它进行实例化,但是 Calendar 专门提供了一个静 态方法可以让它 获取对象-Calendar.getInstance();另外还可以通过它的子类的实例化来获取对象 -new GregorianCalendar();这个类基本上是用于时间的计算的,它不用来进行 展示,因为不好阅读,对于时间的计算,会常常用到三个方法:get、add 和 set, 在使用者三个方法时,注意 Calendar 类的常量的运用; 7.时间类型的转换 long DateCalendar 8.日期的格式化 本质上来说,日期的格式化就是 String 跟 Date 类型的转换, 需要借助一个 SimpleDateFormat 的类来进行日期的格式化; a、SimpleDateFormat 的实例化:注意实例化的参数, 参数列表中是放字符串的,其中大小写 a 到大小写 z 这一段 的所有字母都会自动识别为日期模式,请参照 API,有两个 特殊的写法是 MM 表示的是月份,HH 表示的小时。 b、有关时间模式的一些常用写法: yyyy-MM-dd yyyy-MM-dd HH:mm:ss yyyy/MM/dd c.字符串转日期: sdf.parse(str); 日期转字符串: sdf.format(date); 练习: 通过控制台输入一个身份证号码, 然后获取到这个身份证号码的出生日期,然后转换为 yyyy-MM-dd 的 Date 形式进行输出,然后计算这个身份证 号码的年龄,要注意运算他的生日有没有过。 作业: 1.比如某个超市他们进货的时候会将货物的生产日期和保质期(月份) 来录入一个系统中然后这个系统会在过期的前三个星期的那一周 的周五进行提示,提示说要在本周的周六来进行促销活动,那么, 请写出这个系统的代码; 2.计算劳动合同的续签日: 要求通过控制台输入你合同的签订日期以及年限,然后能够输出你 下一次续签的具体时间,如果续签的当天正好是周末的话, 那么顺延到下周一为续签时间。 java 基础部分笔记(全)note(javase_05) 异常: 1、概念:程序运行过程中所发生的不正常情况 (行为方法的意外结果) ; 2、由来:java 以万物皆对象的思想将生活中的问题封装 成了一个类到 java 中间来,然后这个类中 包含了各种各样 的程序中所发生的问题情况; 3、问题的分类: 可以根据问题的严重情况,分为两种:严重的和不严重; 对于严重的问题,java 会强制性的停止程序,一般都是 JVM 发生了问题; 对于非严重的问题,我们可以通过异常处理机制来进行程序的控制; 严重的:java 中通过 error 这个类进行描述,属于一种错误,一般不编写针对 性的编码进行处理,属于 JVM 错误; 非严重的:java 中通过 Exception 这个类来进行描述,对于这种问题,我们可 以通过编写针对性的代码进行处理; 4、异常的体系: Throwable | |-Error |-OutOfMemeryError:堆溢出 |-StackOverflowError:栈溢出 | |-Exception |-checkedException :已检查异常 |-uncheckedException:不检查异常 (RuntimeException) 7、checkedException:检查异常 除了 RuntimeException 之外的所有异常,它代表的是你需要使用 try-catch 去进行检查的异常 一旦方法上声明出来,那么调用这个方法的地方就必须为此进行处理,若 不处理,则报错,这 类异常一般情况下不是你书写代码的问题,而是一些比如你打印机里没纸 啦,你能说是你打印 机坏了吗?,或者是你读取一个文件,但是这个文件被别人删掉了的问题。 这些问题都是你在 书写代码的时候, 无法预料的问题, 那么, sun 公司觉得这类问题发生的话, 只需要告诉我们 发生了什么事就行了,还是让程序继续运行; 8、uncheckedException:未检查异常 RuntimeException 类下的所有子类,这类异常的发生,百分之百是你代码写 错了,那么,sun 公司就不会对调用了声明这类异常的地方强制要求你进行异常处理,而是 希望程序停掉,让你 去修改代码,因为这类错误在 JVM 看来,它是完全可以避免的,所以 JVM 不会强制性要求你去 用 try-catch 检查此类代码; 5、异常的处理机制: a、try.catch.finally: 格式:try 需要检测的代码块 catch(需要捕捉的异常类+空格+变量) 异常的处理方式 finally 始终会运行的部分 b、throws 和 throw: throws:throws 代表声明一个异常有可能在这个方法中发生, 它一般写于方法签名之后,格式 为:throws+异常类名,如果 一个方法使用了 throws 来进行声明,那么调用它的代码 就 必须进行处理,要么就继续在调用的方法里进行声明, 让调它的方法去处理,要么 就进行 try-catch 处理掉; throw:常用于自定义异常的处理中,表示抛出某个异常, 注意的是,如果是检查异常的话,那么一旦抛出,方法上 就一定需要声明,并且调用的方法上,也一定需要进行处理, 如果是 RuntimeException 的话,那么,不强制要求你去声明, 如果你声明了,也不强制要求你去处理。 6、多异常处理机制: 一旦发生多个异常的话,我们通常做法是使用多个 catch 来进行捕获,这多个 catch 在书写上我们按照 发生频率的高低从上往下书写,不要使用父类来收尾; 9、自定义异常 表示某些情况下,实际的操作是符合 java 的规范的, 但是不符合我们所要求的实际情况,对于这种不符合 实际情况的异常,需要我们自己去定义,我们称这类 异常为自定义异常; 10、IllegalArgumentException 这是一个比较特殊的异常类,他的父类是 RuntimeException,所以使用它不 需要进行声明以及 处理,它就是要让程序停掉,那么当我们某个自定义异常比较简单的时候, 可以不用书写,直接 使用这个异常类; 步骤: a、明确你的自定义异常的异常名,并且弄明白, 你需要继承的是哪个父类; b、明确地知道这个异常所发生的条件; c、写清楚自定义异常的异常信息。 练习:写一个两个数相乘的方法,然后写一个异常类, 当这两个数的其中一个为负数时,抛出异常并要求把 异常的错误信息人性化;再写一个自定异常,要求两者 相乘的数字只能在 0-1000 以内,否则程序停掉并抛出异常; 练习:在之前的 Circye 类中求面积的方法上加一个异常处理 的代码,当半径为负数时,抛出一个自定义异常,写好这个 异常类,并自己判断这个异常应该属于哪个父类,写好测试类。 java 基础部分笔记(全)note(javase_06) IO 流: 1)File 类: 概念:sun 公司提供的一个专门用于操作文件(或目录)的一个类, 这个类可以实现对文件的增删改查的操作,但是无法对文件内容 进行访问; 如何使用:File 类的实例化没有无参的构造器,需要在有参的 构造器里放一个能表示路径的字符串 文件路径的分类: a、相对路径:相对于 eclipse 下你新建 java 文件所在的那个 工程目录而言; b、绝对路径:需要带上盘符,即完整的路径名称,这里需要 注意的是,反斜杠需要成双出现或者打一个斜杠也可以; 注意:在进行文件夹的删除时,如果文件夹内有文件的话, 需要先删除这个文件夹里的所有文件后才能删除该文件夹; 递归方法: 自己调用自己.直到最根上的方法结束再往上返回. 作业: 完成以下操作: 1、查看相对路径下有没有一个叫 test 的文件夹,没有,则创建 2、打印出刚刚创建的 test 文件夹的绝对路径,并且测试它是否为目录 3、再测试以下实例化 File 的时候你输入的路径是不是绝对路径 4、往 test 文件夹里创建一个 hello.txt 的文件,再创建一个 HelloWorld.java 的文件 5、查看以下 test 文件夹里的文件列表 6、查看下 hello.txt 的绝对路径 7、查看下 HelloWorld.java 的最后修改时间,注意时间类型 8、删除 hello.txt 9、删除 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 ,Mysql IBM:DB2 微软:SQL/Server Sybase:Sybase 中软:达梦 DM . 4.Oracle 的安装: 注意在安装的时候不要改动字符集和尽量关掉防火墙; 5、SQL 的介绍: SQL 的全称为:结构化查询语句(Structured Query Language) , 它是用专门用于数据库中的标准数据查询语言,IBM 公司最先使用 它在数据库系统中,值得注意的是,虽然 SQL 语言已经在 1987 年就 形成了一种固定标准,但是各大数据库中的语言仍然无法通用, 它们都各自地在 SQL 标准上进行了一番或多或少的改动以及扩充。 6、根据 SQL 的使用,分为四种类型: a、DQL 语言:数据库查询语言 (专门用于数据库中的查询语句,仅仅只用于查询, 注意,有一些书上没有包含这个类型,而把查询语句 包含在了 DML 语言上面) ; b、DML 语言:数据库操作语言 (专门用于数据库的增删改操作,注意, DML 语言里操作的都是表中的数据) ; c、DDL 语句:数据库定义语言 (专门用于操作表,比如表的创建、删除,修改等等) ; d、DCL 语句:数据结构控制语言 (专门用于控制用户权限以及事务的) ; 7.介绍 SQLPLUS: a、sqlplus 是 Oracle 提供的一个命令行执行工具; b、进入 sqlplus 的方式: 1) 、直接通过 cmd 里面输入 sqlplus,然后进行用户名以及密码的校验; 2) 、直接通过开始栏里面的 Oracle 里面的命令行工具进入,然后进行用户 名密码的校验; c、在 sqlplus 中连接 oracle 的方式: 1) 、使用 cmd 进入的 sqlplus 登陆的话, 直接输入 sqlplus 就会提示你输入用户名密码, 注意密码打出来界面上不会有任何显示; 2) 、使用 sqlplus 工具直接进入的话, 需要使用 conn 用户名/密码的形式来进行登陆,如 果你登陆的是最高权限的用户的话,需要在后面加 一个 as sysdba; d、一些简单的连接 sql 命令:scott/tiger 1) 、conn+用户名/密码 as sysdba:连接数据库,使用相关用户; 2) 、disconn:断开当前用户连接; 3) 、exit:跳出 sqlplus 工具; 4) 、show user:展示当前登陆用户的用户名 5) 、select * from tab:展示当前登陆用户下的所有表对象; 8.oracle 中的数据类型: 1)字符型:char,varchar,varchar2 varchar 不推荐使用 char:固定长度,如果定义 char(10),那么不管存小于或等于 10 的任意大小数据,在数据库中,都占 10 个字符长度空间. varchar2:可变长度,如果定义 varchar(10),那么不管存小于 或等于 10 的任意大小数据,在数据库中,占的空间和数据字符 长度相等. 2)日期型 Date 3)大字段 blob:主要用来存放非字符的文件.如音频,视频等. clob:用来存放文本文件.最大能存放 4G. 4)数字类型 a.number:能够表示的任意数字. b.number(p):表示的整数.长度是 p. c.number(p,s):p 表示长度,s 表示小数点后的位数 1234.567 -number(6,2) -1234.57 1234.567 -number(5)-1235 12345 -number(5,-2)-12300 12365-number(5,-2)-12400 desc +表名:查看表结构 9.DQL:数据库查询语言 1)查询语句 select + 列名,列名 + from + 表名; 2)别名 列名 as + 自定义名称 3)数字运算 包括: +-*/ 注意: a.空值跟任意数据做运算结果都为空 b.数字运算只能作用在数字列,不能使用在非数字类型的字段. 4)nvl 函数: 格式:nvl(p1,p2):如果 p1 为空,则显示 p2,否则,显示 p1 例:查找 emp 表中所有人的姓名以及月收入 select ename,sal+nvl(comm,0) from emp; 5)列名拼接:| select ename|,|job from emp; 6)去重复值:distinct 使用在想要去重复的字段前 查找 emp 表中存在的部门编号 select distinct deptno from emp; 7)带条件的查询:where 查询一些附带某些条件的语句。 例:查找部门 10 下所有的雇员名称。 select ename,deptno from emp where deptno = 10; -条件语句 a.比较操作符 = =1000 and sal 1000 order by sal desc,comm asc; java 基础部分笔记(全)note(db_02) -伪表 dual oracle自带的表,这个表
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 全新开荒保洁协议
- 写景作文技巧解析
- 第六小学开展学生五项管理工作方案
- 高三第一学期语文教学方案
- 音乐老师个人教学方案
- 小班教师教育教学工作总结
- 幼儿园的管理方案
- 消防设施操作员证课件
- 个人职业目标设定与调整考核试卷
- 再生物资回收项目可行性分析考核试卷
- 悬灸技术课件
- 2025年广西中考英语真题(原卷版)
- 2025年兵团职工面试试题及答案
- 2025年西式面点师(技师)考试必刷题库(含答案)
- 术后伤口的观察及护理
- 联营扣点商户管理制度
- 2025至2030中国新闻出版行业发展现状及前景趋势与投资报告
- 生产现场改善方案(3篇)
- 麻醉术中肺水肿临床处理与预防
- 施工动火作业方案(3篇)
- 2025年合肥瑶海学前教育有限责任公司招聘题库带答案分析
评论
0/150
提交评论