JAVA总结 DAY012 1029

DAY012

一、API与类库

1.API
1、API:Aplication programming interface应用程序编程接口
2、接口interface:用于规定方法名称的规则的集合。定义方法的修饰符、返回值类型、方法的名称、方法的参数列表、方法的功能。
3、API接口:应用程序编程接口,包含了各种实际有实现内容的方法、类型、接口、枚举
更多使用的是这些内容的调用,而不是实现内容。

2.类库
1、API就是开发人员写好的类型,本质上是编译好的.class字节码文件
2、将字节码文件打包之后,生成一个jar包(Java专用的压缩包)
3、将来只要导入jar包,就可以使用这个jar包中全部的类型
4、各种jar包,合成一个类库
5、自己创建的工程,默认导入了一个JRE System Library,包含了jdk提供的常用的jar包
6、如何生成jar包:
在eclipse中,选中要导出内容,右键export---->Java---->Jar File
在弹出的框中,选择要生成的文件路径,点击finish
7、第三方Jar包:
Jdk开发商是第一方、程序员作为用户是第二方,开源社区、组织或者其他公司都可以认为是第三方
一旦将第三方的jar包导入到我们的工程中来,就可以使用第三方开发好的所有功能
8、导入第三方jar包:
1、在工程下新建一个目录(专门用于存放第三方jar),命名为lib
2、将下载好的第三方jar包,拷贝到lib目录中
3、将导入的jar包添加到Build Path中(鼠标右键,选择build path----> add to build path)
4、看到奶瓶状的标记出现,就说明该jar包中的所有类型可以直接使用了
9、使用第三方jar包,查看原码:
1、使用鼠标右键,选择Open declaration
2、使用快捷键F3
3、使用键盘ctrl + 鼠标左键
10、关联源代码:
Attach Source ---->external File或者Folder---->找到原码所在的目录即可

二、Object

1.Object类型的概述
1、Object类是所有类型的顶层父类,所有类型的直接或者间接的父类;所有的类型中(包括数组)都含有Object类中的所有方法。
2、随意定义一个类型,不手动显式定义其父类,那么这个类的父类就是Object类
3、Object类的构造方法:Object()
1、可以自己创建对象
2、让子类访问,所有子类都会直接或者间接的访问到这个顶层父类的构造方法
3、Object类在执行构造方法时,不去访问自己的父类,因为没有父类了

2.getClass()方法
1、返回当前对象的运行时类
2、运行时类:真正创建对象所使用的那个子类类型。写代码的时候可能使用的是父类类型或者是接口类型的引用。
3、返回值类型:Class类型的对象,就是加载到方法区的那个字节码对象。
4、其中Class类型中有一个getName方法,可以返回当前类型的全类名
代码示例

public static void main(String[] args) {
		Object obj = new Object();
		System.out.println(obj.getClass());
		System.out.println(obj.getClass().getName());
		Person p = new Person();
		System.out.println(p.getClass());
		System.out.println(p.getClass().getName());
	}

3.hashCode方法
1、根据对象的情况,生成的一个整数,就是哈希码值。生成数字的方法就是hashCode方法
2、生成数字的原则:
1、同一个对象多次调用hashCode方法,【必须】返回相同的整数(程序多次运行不要求哈希码值保证一致)
2、使用equals方法判断相同的两个对象,【必须】返回相同的整数(equals方法是用于决定两个对象是否相同的方法)
3、使用equals方法判断不相同的两个对象,【尽量】返回不相同的整数(不做强制要求)
4、Object类型的hashCode,【确实】会根据不同的对象生成不同的整数。
代码示例

public static void main(String[] args) {
		Object obj = new Object();
		System.out.println(obj.hashCode());
		Person p = new Person();
		System.out.println(p.hashCode());
		obj.equals(p);
	}

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

public static void main(String[] args) {
		//Object类型调用toString方法
		Object obj = new Object();
		System.out.println(obj.hashCode());
		System.out.println( Integer.toHexString(obj.hashCode()));
		System.out.println(obj.toString());
		System.out.println(obj.getClass().getName()+"@"+ Integer.toHexString(obj.hashCode()));
		System.out.println(obj.toString());
		//Person类型调用toString()方法
		Person p = new Person();
		System.out.println(p.toString());
		Person p1 = new Person("张三",30);
		System.out.println(p1.toString());
		//String 类中的toString方法
		String str = "ass";
		System.out.println(str);
	}

5.equals方法
1、用于比较两个对象是否相等的方法,比较的就是“调用者”和“参数”这两个对象
boolean equals(Object obj)
2、性质:
自反性:自己和自己相等
对称性:A和B相等,那么B就和A相等。A.equals(B)为true,那么B.equals(A)也为true
传递性:A.equals(B)为true,并且B.equals©为true,那么A.equals©也为true
一致性:A多次调用equals方法用于和B对象比较,应该返回相同的判断结果
3、在Object类型中,比较的是两个引用是否指向了同一个对象。如果是,才返回true。相当于是在比较两个对象的地址值是否相同。
4、实际生活中,比较两个对象的内存地址,没有什么意义。因此在自定义的子类中,都要重写这个方法。
5、重写原则:
一般比较两个对象中的所有属性,是否全部相同
代码示例

public static void main(String[] args) {
        Person p = new Person("张三",20);
		Person p1 = new Person("张三",20);
		System.out.println(p.equals(p1));
}

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

三、Scanner

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

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

public static void main(String[] args) {
		//录入基本的数据类型
		Scanner sc = new Scanner(System.in);
        byte nextByte = sc.nextByte();
		System.out.println(nextByte);
		}

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

3.Scanner常见的一些错误
1.java.util.InputMismatchException Scanner抛出
表示 Scanner到的令牌与预期类型的模式不匹配,或令牌超出预期类型的范围 ==>表示键盘输入的值与当前接收值的类型不匹配
解决: public boolean hasNextInt() 用于判断是输入的值与接收的值的类型 是否匹配

2.没有输入字符串就直接结束
原因是: 把\r\n==回车键 把这个当前输入的字符串
解决这个问题 1.重新实例化一个Scanner(基本上不使用,它需要重新实例化对象,比较消耗内存) 2.把输入的int变成输入字符串(了解)

四、String

1.什么是String
1.导包: java.lang.String (不用去导包)
2、所有的字符串常量(“Hello World”、”abc”)都属于String类型的对象
3、字符串字面值属于常量,存储在方法区的常量池中。
4、String类型是一个常量,在创建之后就无法更改(是一个不可变的字符序列)。
5、不可变的原因是String类型只提供了构造方法,没有提供set方法,因此只能在创建对象的时候,初始化成员变量,将来对象创建完成之后,无法通过方法来修改。

2.String类型的构造方法
1、String():创建一个空字符串
2、String(String original):创建参数字符串的一个副本(参数字符串是在常量池中,构造方法创建的字符串是在堆内存中)
3、String(byte[] arr):将一个字节数组转成一个字符串
4、String(byte[] arr, int offset, int length):将字节数组的一部分转成字符串
5、String(char[] arr):将字符数组转成字符串
既不是编码,也不是解码,只不过是把字符串成了串
6、String(char[] arr, int offset, int length):将字符数组的一部分转成字符串

3.String类型的判断功能
public boolean equals(Object anObject) 用于比较字符串的指定对象是否相同
public boolean equalsIgnoreCase(String anotherString) 比较两个字符串,忽略大小写
public boolean startsWith(String prefix) 测试此字符串是否以指定的前缀开头
public boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结尾。
public boolean contains(CharSequence s) 表示此此字符串是否包含此字符
public boolean isEmpty() 对字符段进行判断,当长度为0的时候就是true其它都是 false 注意点String str =null 调用其方法会报空指针异常

4.String类型的获取功能
public int length() 返回值是字符串的长度
public char charAt(int index) 返回是返回char指定索引处的值, 索引是从0 开始 最后一个索引是字符串的长度-1(类似于数组)
public int indexOf(int ch) 回指定字符第一次出现的字符串内的索引
public int lastIndexOf(int ch) 返回指定字符的最后一次出现的字符串中的索引
public String substring(int beginIndex) 根据这个索引来截取字符串 只传递一个参数 beginIndex 从这个开始 一直到字符串的长度结束
public String substring(int beginIndex,int endIndex) 从beginIndex 开始截取 一直截取到endIndex结束(包头不包尾)
public String[] split(String regex) 表示根据 regex来进行分割 返回的是一个数组

5.String类型的转换功能
public byte[] getBytes() 把字符串转换成一个字节数组
public char[] toCharArray() 此字符串转换为新的字符数组。
public String toLowerCase() 把字符串的大写字母转换为小写字母
public String toUpperCase() 把小写字母都转换成大写字母
public String toString() 把对象转换成字符串
public String concat(String str) public String concat(String str)
public static String valueOf(boolean b) 把各种基本数据的数据 转换成一个字符串

6.String类型的其他方法
public String replace(char oldChar,char newChar) 替换 把字符串 oldChar 用 newChar 来进行替换 返回的是替换后的字符串
public String trim() 去掉前后的空格(中间的不能被替换)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值