类与库
库的来源:
1.jdk自身提供的;
2.自己封装的;
3.第三方提供的库(收费);
类库:
类库是指把java文件编译成class文件,然后打包成为 jar 文件供人使用.
引入第三方库步骤 :
1.下载jar (导入到工具类)
2.在项目里新建一个文件夹 lib ,把下载好的 jar 包放入到lib文件夹;
3. 添加项目依赖
4. 使用该库
Object
描述:
1.所有类的直接父类或者是间接父类都是Object ;
2.如果这个类没有父类,也没有继承Object,系统会默认继承;
3. Object 类调用不了父类的super()构造(Object没有父类)
4.构造方法: 无参构造方法
public Object(){
}
常用的基本方法:
public int hashCode()
1.如果是同一个对象,两次调用 hashCode() 返回的哈希码值是一样的;
2.两个对象的哈希值一样并不一定是同一个对象(内存地址不同);
3.把哈希值转换为16进制
Integer . toHexString (obj. hashCode ( ) )
public final Class<?> getClass()
返回此 Object 的运行时类描述类的信息,实际上存的是一些字节码文件。
public String getName()
返回当前类的完成的包名+ 类名
public String toString() toString
方法会返回一个“以文本方式表示”此对象的字符串
注意点:
默认toString()返回的没有任何意义,所有需要重写: 一般重写是得到这个类的成员属性的值(快捷键是 Alt+insert)
public boolean equals(Object obj)
要与之比较的引用对象 (比较的是两个引用数据类型的地址是否一样),返回值是true或者false,查找源代码发现equals实际上在最底层也是运用恒等于(==)来对比的;同时在正常使用的时候需要重写这个 equals(Object obj) 方法,那样才有具体的意义
恒等于(==) 与 equals( )
相同点: 都可以做比较(做引用数据类型的比较)
不同点:
1.恒等于(==)如果是基本数据类型比较的是具体的值, 如果是引用数据类型比较的是内存地址;
2.equals( ) 只能比较引用数据类型的地址值(一般都需要进行重写)
Scanner 类
1.导包java.util
2.System.in 输入流对象(从键盘获取你输入的数据)
构造:
Scanner(InputStream source)
实例化一个Scanner类对象的步骤
1.导包
import java.util.Scanner;
2.实例化 类名 对象名 =new 类名()
Scanner input=new Scanner(System.in);
3.对象名.方法名() 对象名.属性
Scanner类常规的方法:
nextInt()
nextBoolean()
nextDouble()
nextByte() …
注意:基础数据类就没有 nextChar( )
需要使用
char ch=scanner.next().indexOf(0);
Scanner提示错误的原因:
java.util.InputMismatchException;
错误原因: 因为接收的值与你键盘输入的值不匹配
public boolean hasNextInt()
判断来解决以上的问题
接收字符串的两个方法:
next()
nextLine() (读取的一行的记录)
输入时无法连续输入两次:
原因是:系统把回车键(\r\n) 当成字符读取,因此所有直接结束;
解决方法:
1.重新来实例化Scanner类
2.把接收 i n t 类型的转换为 S t r i n g 类型 (S t r i n g 类型比 i n t 类型操作方便)
String :
1.它是一个字符串,也是是一个引用数据类型;
2.在java.lang下,不需要进行导包;
3.字符串赋值值 :也就是 String str=“aaaa”
4. 字符串是存在方法区里的字符串常量池里;
5.符串是常量;
它们的值在创建之后不能更改(不能改变的是具体的值,而引用地址是可以改变),可以实现数据共享
构造方法:
1.空的构造 public String()
2.public String(byte[] bytes)
3.public String(char[] value)
4.String str=“abc”(直接赋值)
String 常规的方法分为三类
判断性
判断两个字符串是否相等
equals(Object anObject) :
判断字符串是否包含此字符
boolean contains(CharSequence s)
判断此字符串的后缀结尾
boolean endsWith(String suffix)
判断字符串的前缀
boolean startsWith(String prefix)
判断两个字符串忽略大小写
public boolean equalsIgnoreCase(String anotherString)
进行非 null 验证
public boolean isEmpty()
获取性
根据索引来获取字符串相对应的值,索引是从0 开始,到字符长度-1为止
public char charAt(int index)
返回的是字符串的长度
public int length()
返回字符串第一次出现的索引值(如果找到返回的是索引值,找不到返回的是-1)
public int indexOf(int ch)
包头不包尾 , beginIndex是 开始的索引 endIndex 是结束的索引
public String substring(int beginIndex,int endIndex)
根据给定的条件进行拆分
public String[] split(String regex)
转化性
将一个字符串转换成一个字节数组
public byte[] getBytes()
返回一个新的字符( 第一个参数是需要替换的字符, 第二参数是插入的字符)
public String replace(char oldChar,char newChar)
把当前字符串转换成大写
public String toUpperCase(Locale locale)
把字符串转换成小写
public String toUpperCase(Locale locale)
去掉前后的空格
public String trim()
把int类型转换成String 类型,这是一个静态的方法(基本数据类型之间相互转换)
public static String valueOf(int i)
把字符串转换成一个char的数组
public char[] toCharArray()
总结
今天总体来说学的是JAVA的api中的多种比较常见的方法,特别是String类的方法,通过调用各种方法来对相应的字符串进行 操作,但是在实际使用上,如果第一时间不能理清逻辑,脑袋里面想到相应的方法的话,会卡在原地很久,希望能够在之后几天的api学习里面更好的克服这个问题吧
疑问
1.怎么能够使用Api查找到自己想要的方法,有通过中文索引找到方法的吗?
2.在api查找方法过程中,遇到很多觉得实用的函数,但是实际上有很多参数不懂应该传入什么值?
3.测试类和方法类中应该什么时候放进循环和判断很难选择,这个时候如何更好的优化代码?