学习java第11天

Day11

昨日回顾
抽象方法:
abstract void 方法名();
抽象类:
abstract class 类名{}
抽象方法一定在抽象类中,抽象类可以没有抽象方法,但是一定写了抽象方法,被继承 了,此时,如果没有重写方法,报错,给子类加上抽象。
抽象类不能被实例化,通过创建子类对象,抽象类的多态
接口 interface implements
interface 名称{} 属性:公开静态常量 方法:公开抽象方法
class 类名 implements 接口{方法的重写}
抽象类和接口:
抽象类有构造方法,接口没有
抽象类,变量,方法,接口只能写公开静态的常量,公开抽象的方法
抽象类子类去继承的,接口类去实现
抽象类可以实现多个接口,一个类只能继承一个抽象类
接口是设计的结果,抽象类是重构的。
接口只能进行方法声明,抽象类可以声明也可以实例化
匿名内部类:
没有名字
new 父类类名或者接口(){重写方法}
Object类型
Api
1、API:Application Programming Interface,应用程序编程接口
2、接口:用于规定方法名称的规则的集合。定义方法的修饰符、返回值类型、方法的名称、方法的参数列表、方法的功能。
3、API: 不止于代表接口,还代表具有各种功能的方法,类 枚举 接口 ,API 是对以上的总称。
4、只不过,学习的时候,更多关注的是属于接口的内容的部分,即更多使用的是这些内容的调用,而不是实现内容。
类库
1、Java中的核心类库:
java中的源代码经过编译之后, 形成好多字节码文件,这些字节码文件包含了jdk中所有 的类 接口 枚举 注解 ,将这些字节码文件按照不同的功能进行分类,压缩打包成好多个 jar 类型的压缩包 ,这些压缩的包的总称就是核心类库。
2、Java的第三方类库:
不一定是oracle公司开发的,可能是一些开源组织 一些程序员 在网上进行开源共享的 类库,我们可以直接拿过来用,为了提高开发效率。
3、Java中可以将.class的字节码文件,打包生成jar包
(1)Jar包就是.class文件的压缩包,是java专用的压缩包,一旦获得了jar包就相当于获得了里面所有的.class文件
(2)jar包的生成:在eclipse中选中要打包的类型(包、工程),鼠标右键选择export----java----jar file----选择生成的jar文件的路径
(3)jar包的使用:将下载好的jar包,拷贝到当前工程中,选择该jar包,右键build path----add to Build path(将当前jar包中的类型,添加到当前工程的编译路径)
(4)jar包的删除:先把jar文件删掉;将依赖路径也删掉(不要让当前工程继续依赖这个jar包),build path----configure build path----libraries----remove丢失的jar文件
3、类型库:
(1)jar包的内容还是太少,一系列相关的jar包,组成一个类型库,library
(2)一旦导入了类型库,就相当于导入了类库中的所有jar包,相当于是获取了其中的所有.class类型,例如,导入了JUnit类库之后,就可以对方法进行单元测试
(3)添加的方式:
选中工程----右键----build path----add libraries----选择要添加的类型库即可

Object类型的概述
1、Object类是所有类型的顶层父类,所有类型的直接或者间接的父类;自定义一个类如果 没有继承任何的类,那么Object类就是这个类的直接父类。
2、随意定义一个类型,不手动显式定义其父类,那么这个类的父类就是Object
特点:自定义一个类,这个类中就默认拥有了Object类中的所有的非私有的属性和方法
图示:

3、Object类的构造方法:Object()
(1)可以自己创建对象
(2)让子类访问,所有子类都会直接或者间接的访问到这个顶层父类的构造方法
(3)Object类在执行构造方法时,不去访问自己的父类,因为没有父类了
(4)Object类型的引用,可以指向任何类型的对象

toString方法
1、返回当前对象的字符串表示
特点:
当打印一个对象的引用的时候,默认打印的是toString方法的返回值,返回值是一个字符串
2、Object类型中,这个方法的实现:全类名 + @ + 哈希码值的十六进制表示
getClass().getName() + “@” + Integer.toHexString(hashCode());
简称这个内容为:对象的地址值
3、对象返回这样一个地址值的字符串,没有什么意义,因此对于子类而言,需要重写父类的这个方法。
4、重写的原则:返回该对象中的所有成员变量的值(对象的属性)
5、最终操作:不需要手动重写,可以直接使用快捷键生成:
Alt + shift s s
6、使用打印语句打印一个对象,其实打印的就是这个对象的toString内容

equals方法
1、equals(Object obj):指示其他某个对象是否与此对象“相等”
2、相等:
== : java中的等于号
基本数据类型: 判断的是两个变量的数值是否相同
引用数据类型: 判断的是两个引用的地址值是否相同

equals(Object obj): 
   基本数据类型: 不可以使用
   引用数据类型: Object类中的equals方法默认的实现和 == 是一样的,也是判断两个	   引用的地址值是否相同,在实际的开发中,这种判断的逻辑不符合要求,所以在开发中 	   需要根据开发的需求进行重写。(一般是两个对象的属性值完全相同就认为是同一	   个对象)。

equals方法重写的要求:(死记住)
1. 判断两个引用是否相同 相等 ----> true
2. 判断obj是否为空 空 ----> false
3. 判断两个对象的类型是否一致 不一致 ----> false
4. 向下转型(name,age)
5. 根据开发需要,通过属性判断两个对象是否为同一个对象
3、重写操作:
不需要手动自己重写equals方法,直接使用eclipse中的快捷键即可
Alt + shift + s h

==和equals方法的区别
1、==和equals都是用于比较数据是否相等的方式
2、不同点:
(1)比较内容的不同:
==可以比较任意数据类型,既可以比较基本数据类型,也可以比较引用数据类型
equals方法只能比较引用数据类型
(2)比较规则不同:
==在比较基本类型的时候,比较的是数据的值;比较引用类型时,比较的是地址值
equals方法在重写之前,比较的是两个对象的地址值;在重写之后,比较的属性值

Scanner
概述
1、Scanner就是一个扫描器,可以扫描指定设备的基本数据类型和字符串
2、构造方法:
Scanner(File f):扫描指定文件
Scanner(String path):扫描指定的路径
Scanner(InputStream is):扫描指定的输入流
其中学习过的第三个:Scanner(System.in),其中的System.in就是一个输入流,标准输入流,默认关联到键盘。
3、扫描器可以解析基本数据类型和字符串

录入基本数据类型
1、录入基本数据类型的方法:
nextByte():获取一个byte数据
nextShort():获取一个short数据
nextInt()
nextLong()
nextFloat()
nextDouble()
nextBoolean()
2、注意事项:
(1)没有nextChar这个方法,一般都是直接录入字符串
(2)键盘录入的数据,不是java代码,所以float类型的常量不需要加f
(3)一次想录入多个数据,可以使用空格进行分隔

录入字符串类型
1、next():可以录入下一个完整的标记,返回一个字符串。通过空格来分隔各个标记。
2、nextLine():可以录入下一个完整的标记,返回一个字符串。通过换行符来分隔各个标记。

Scanner类型的小问题以及避免
1、问题:当调用完以空格作为分隔符的方法之后,再调用一个以换行符为分隔符的方法时,这个方法不会等待你继续录入,而是直接结束程序,如果打印返回的内容,就是一个空字符串。
3、解决方式:
(1)连续两次调用nextLine,第一次会将空串略过,第二次就会等待用户录入
(2)创建两个Scanner对象,新的Scanner对象中没有上次录入的数据,是干净的,所以不会影响下次的录入。
(3)所有的录入都以字符串的形式录入到内存中,然后再进行数据类型之间的转换

String
概述
1、String就是字符串类型,属于java.lang包,不需要导包
2、所有的字符串常量(“Hello World”、”abc”)都属于String类型的对象
3、字符串字面值属于常量,存储在常量池中。
4、String类型是一个常量,在创建之后就无法更改(是一个不可变的字符序列)。
5、不可变的原因是String类型只提供了构造方法,没有提供set方法,因此只能在创建对象的时候,初始化成员变量,将来对象创建完成之后,无法通过方法来修改。
String类型的构造方法
1、String():创建一个空字符串
2、String(String original):创建参数字符串的一个副本(参数字符串是在常量池中,构造方法创建的字符串是在堆内存中)
3、String(byte[] arr):将一个字节数组转成一个字符串
将我们不认识的字节数组,转成了我们认识的字符串,过程叫做【解码】
查询的是当前平台默认的编码表 GKB utf-8
4、String(byte[] arr, int offset, int length):将字节数组的一部分转成字符串,
第一个:字节数组 第二个值:起始位置 第三个值:数量
5、String(char[] arr):将字符数组转成字符串
既不是编码,也不是解码,只不过是把字符串成了串
6、String(char[] arr, int offset, int length):将字符数组的一部分转成字符串

String类型的判断功能
1、equals(Object obj):判断调用者和参数对象描述的字符串内容是否相同
2、equalsIgnoreCase(String otherStr):忽略大小写判断两个字符串内容是否相同
3、contains(String str):判断调用者是否包含了str这个子串
4、startsWith(String prefix):判断调用者是否以prefix开头
5、endsWith(String suffix):判断调用者是否以suffix结尾
6、isEmpty():判断调用者是否是空串

String类型的获取功能
1、length():获取字符串字符的个数
2、charAt(int index):返回调用者字符串中索引为index的字符(和length方法结合之后可以 遍历字符串)
3、substring(int beginIndex):获取一个字符串,内容是从当前字符串的beginIndex索引开始
4、substring(int beginIndex, int endIndex):获取一个指定索引范围的子串
注意事项:
1.包含头不包含尾,返回的结果中,不包含endIndex索引指向的字符;
2.所有的方法都无法修改字符串对象本身,一般都是返回一个新的字符串对象
5、indexOf家族:
indexOf(int ch):返回ch字符在当前调用者字符串中,第一次出现的索引
indexOf(int ch, int fromIndex):从fromIndex索引开始寻找,找到ch字符在当前字符串 中第一次出现的索引
indexOf(String str):返回的是str这个字符串在调用者字符串中第一次出现的索引
indexOf(String str, int fromIndex):从fromIndex索引开始寻找,找到str字符串在当前字符串中第一次出现的索引(注意:无论从哪个位置开始找,所有字符的索引都不会变化)
6、lastIndexOf家族:
和IndexOf基本一样,只不过是从后往前找,所有字符和字符串的索引也都不会发生变化

String类型的转换功能
1、byte[] getBytes():将当前字符串,转成字节数组
2、char[] toCharArray():将当前的字符串,转成字符数组
3、toUpperCase():将当前的字符串,转成全大写形式
4、toLowerCase():将当前的字符串,转成全小写形式
5、concat(String str):将当前调用者,和参数str进行拼接,返回拼接后的长字符串(不常用,因为更多使用的是运算符+)
6、valueOf家族:可以将任意数据类型的数据,转换成字符串

String类型的其他方法
1、replace(String oldStr, String newStr):将调用者中的老串替换成新串
2、trim():去掉字符串左右两边的空格、制表符
3、split(String regex):根据给定正则表达式的匹配拆分此字符串。

Math
1、概述:关于数学的类,在这个类中封装了一些关于数学的方法,可以完成一些常见的数学操作。
2、特点:

  1. Math类属于java.lang包下的 所以使用的时候不用导包
  2. Math类是final修饰的,不允许有子类的
  3. Math类的构造方法是被私有化的,不允许创建对象
  4. Math类中的所有的方法和属性 都是静态的,可以直接通过类名调用.
    3、两个常量
    E:自然对数的底数,2.718
    PI:圆周率

4、常用方法
abs(数字类型),返回该参数的绝对值
cbrt(double d),返回d的开立方根
sqrt(double d),返回d的正平方根
ceil(double d),返回d的向上取整
floor(double d),返回d的向下取整
max(int a, int b),返回a、b的较大值
min(int a, int ),返回a、b的较小值
pow(int a, int b),返回a的b次幂
random(),返回0.000~0.999的随机数
round(double d),返回d四舍五入的结果


版权声明:本文为weixin_46362959原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。