一、API
1.介绍
1.API:Application Programming Interface,应用程序编程接口。
**2.接口:**用于规定方法名称的规则的集合,定义方法的修饰符、返回值类型、方法的名称、方法的参数、方法的功能。
**3.实际:**也包含了各种实际有实现内容的方法,类型、接口、枚举。
2.类库
1.API就是别人写好的类型,编译之后给到我们,就是.class字节码文件。
2.将字节码文件打包之后,生成一个jar包(java专用的压缩包)
3.将来只要导入jar包,就可以使用这个jar中的全部的类型
4.各种jar包,合成一个类库
5.生成jar包
选中要导出内容,右键export–java–jar file
再次选择存储的目录,点击finish完成
6.第三方jar包
Jdk开发商是第一方,程序员作为用户是第二方,开源社区、组织或者其它公司都可以认为是第三方
7.导入第三方jar包
在工程目录下新建一个文件夹(lib)
将下载好的jar包复制到lib目录下
选中jar包右键–>build path–>add to build path
生成一个小奶瓶的形状,就可以使用jar中的功能
8.关联源代码
ctrl+点击–>Attach source–>external location–>external file/foloder–>ok
二、Object
1.概述
1.Object类是所有类型的顶层父类,所有类型直接或者间接的父类,所有的类型中都含有Object类中的所有方法。
2.随意定义一个类,不手动显式定义其父类,那么这个类的父类是Object类型。
3.Object类型中的构造
可以自己创建对象
可以让子类访问
4.Object称为上帝类,没有父类了。
2.常用方法
1.hashCode()方法
根据对象的情况,生成一个整数,就是哈希码值,暂时认为地址值
生成原则:
同一个对象多次调用hashCode()方法,返回相同的整数
public class Demo01 {
public static void main(String[] args) {
Object obj1 = new Object();
System.out.println(obj1.hashCode());
System.out.println(obj1.hashCode());
System.out.println(obj1.hashCode());
Object obj2 = new Object();
System.out.println(obj2.hashCode());
System.out.println(obj1.equals(obj2));//false
}
}
2.toString方法
返回当前对象的字符串表示
全类名+@+哈希码值的十六进制表示
简称这个内容:对象的地址值
getClass().getName+”@”+Integer.toHexString(hasCode())
在打印对象名时,默认调用toString()的方法
重写:打印本类型想要展示的信息,可以重写toString()方法
Alt+shift+s–>generate toString()
public class Demo02 {
public static void main(String[] args) {
/*Object obj = new Object();
System.out.println(obj.toString());
Demo d = new Demo();
System.out.println(d.toString());
System.out.println(d);*/
/*System.out.println(d.getClass().getName());
System.out.println(Integer.toHexString(d.hashCode()));*/
Person p = new Person();
p.name = "张三";
p.age = 20;
System.out.println(p);
}
}
class Demo{
}
class Person{
String name;
int age;
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}
3.equals()方法
用于比较两个对象是否相等的方法,比较的是调用者和参数这两个对象
在Object类中,equals方法比较的是两个对象的地址值
public class Demo03 {
public static void main(String[] args) {
Object obj1 = new Object();
Object obj2 = new Object();
Object obj3 = obj1;
System.out.println(obj1.equals(obj2));//false
System.out.println(obj1.equals(obj3));//true
/*
* 两个人的姓名和年龄
* 如果一致认为是同一个
*
* */
Person p1 = new Person("张三",20);
Person p2 = new Person("张三",30);
System.out.println(p1.equals(p2));//false
}
}
class Person{
String name;
int age;
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
//判断是否属于该类型
if(!(obj instanceof Person)) {
return false;
}
Person p = (Person)obj;
/*if(name.equals(p.name)) {
if(age==p.age) {
return true;
}
}*/
return name.equals(p.name)&&age==p.age;
}
}
3.==和equals方法的区别
1.==和equals()都是用来比较数据是否相等的方式。
2.不同点:
比较内容:
==:可以比较任意数据类型,既可以比较基本数据类型,也可以比较引用数据类型
equals():只能比较引用数据类型
比较规则不同:
==:在比较基本数据类型的时候,比较的是数据本身,比较是引用数据类型时,比较的是地址值
equals():在重写之前,比较的是地址值,在重写之后,按照重写的规则进行比较
public class Demo04 {
public static void main(String[] args) {
String str1 = "abcd";
String str2 = "abcd";
//字符串比较的是本身的内容
System.out.println(str1.equals(str2));
System.out.println(5==5);
Demo11 d11 = new Demo11();
Demo11 d22 = new Demo11();
System.out.println(d11==d22);//false
System.out.println(d11.equals(d22));
}
}
class Demo11{
@Override
public boolean equals(Object obj) {
return true;
}
}
三、Scanner
1.概述
1.Scanner就是一个扫描器,可以扫描指定设备的的基本数据和字符串。
2.构造方法
Scanner(File f):扫描指定文件
Scanner(String path):扫描指定的路径
Scanner(InputStream is):扫描指定的输入流
System.in就是一个标准输入流,默认关联键盘
3.扫描器可以解析基本数据类型和字符串。
2.录入基本数据类型
nextByte():获取一个byte数据
nextShort(): 获取一个short数据
nextInt()
nextLong()
nextFloat()
nextDouble()
nextBoolean()
注意事项:
没有nextChar()这个方法,一般都是录入字符串
键盘录入的数据,不是java代码,所以float类型不需要加f
一次想录入多个基本数据,可以使用空格或者回车进行分隔
`public class Demo01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
boolean b = sc.nextBoolean();
System.out.println(b);
double d = sc.nextDouble();
System.out.println(d);
float f = sc.nextFloat();
System.out.println(f);
}
}
3.录入字符串类型
1.next():获取字符串,通过空格或者换行进行分隔
2.nextLine():获取字符串,通过回车进行分隔
/*
* 获取字符串
* */
public class Demo02 {
public static void main(String[] args) {
//method01();
method02();
//ctrl+d 删除光标所在的行
}
/*
* nextLine()
* */
private static void method02() {
Scanner sc = new Scanner(System.in);
String str1 = sc.nextLine();
String str2 = sc.nextLine();
System.out.println("str1="+str1);
System.out.println("str2="+str2);
}
/*
* next()
* */
private static void method01() {
Scanner sc = new Scanner(System.in);
String str1 = sc.next();
String str2 = sc.next();
String str3 = sc.next();
String str4 = sc.next();
System.out.println("str1="+str1);
System.out.println("str2="+str2);
System.out.println("str3="+str3);
System.out.println("str4="+str4);
}
}
4.Scanner类型中的录入问题
1.根本原因:结束标志不一样。
2.建议:不要混着使用。
/*
* scanner类型中的录入问题
* */
public class Demo03 {
public static void main(String[] args) {
//method01();
//method02();
//method03();
method04();
}
/*
* 第三种解决方案
* */
private static void method04() {
Scanner sc = new Scanner(System.in);
int x = Integer.parseInt(sc.nextLine());
System.out.println(x);
String str = sc.nextLine();
System.out.println(str);
}
/*
* 第二种解决方式
* */
private static void method03() {
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
System.out.println(x);
sc = new Scanner(System.in);
String line = sc.nextLine();
System.out.println(line+"....");
}
/*
* 第一种解决方式
* */
private static void method02() {
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
System.out.println(x);
sc.nextLine();//返回一个空串,但是我们不使用这个返回值
String line = sc.nextLine();
System.out.println(line+"....");
}
/*
* 混用产生的问题
* */
private static void method01() {
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
System.out.println(x);
String line = sc.nextLine();
System.out.println(line+"....");
}
}
四、String
1.概述
1.String就是字符串类型,一个引用数据类型,属于java.lang包,不需要导包
2.所有的字符串常量{“hello world” “abc” “xyz”}都属于String类型的对象
3.字符串字面值属于常量,存储在方法区的常量池中。
4.String类型是一个常量,在创建之后就无法更改(是一个不可变的字符序列)。
5.不可改变的原因是内部维护一个字符数组,数组使用final修饰的,不可发生改变,同时也没有对外提供相应的修改的方法。
public class Demo01 {
public static void main(String[] args) {
String str = "abcd";
System.out.println("abc".length());
System.out.println(str);//重写toString()
str = "xyz";
System.out.println(str);
}
}
2.String类型的构造方法
1.String():创建一个空字符串
2.String(String str):创建参数字符串的一个副本(参数字符串在常量池中,构造方法创建的字符串在堆内存中)
3.String(byte[] buf):将一个字节数组转成一个字符串
将我们不认识数字转成我们认识的字符串,过程叫【解码】
4.String(byte[] buf,int offset,int len):将字节的数组的一部分转成字符串
5.String(char[] arr):将字符数组转成字符串
既不是编码,也不是解码,只不过把字符拼接成了串
6.String(char[] arr,int offset,int count):将字符数组的一部分转成字符串
public class Demo02 {
public static void main(String[] args) {
String str1 = "abcd";
//str1 = "xyz";
String str2 = "abcd";
System.out.println(str1==str2);//true
String str3 = new String();
System.out.println(str3);
String str4 = new String("abcd");//两个对象
System.out.println(str4==str1);//false
System.out.println(str4.equals(str1));//true
}
}
public class Demo03 {
public static void main(String[] args) {
//解码:数字-->字符串
//编码:字符串-->数字
byte[] buf = {97,98,99,100,101,102};
String str = new String(buf);
System.out.println(str);
//编码
System.out.println(Arrays.toString(str.getBytes()));
String str1 = new String(buf,1,3);
System.out.println(str1);
char[] chs = {'x','1','y','x','q'};
String str2 = new String(chs);
System.out.println(str2);
String str3 = new String(chs,1,3);
System.out.println(str3);
}
}
3.String类型的判断功能
1.equals()
2.equalsIgnoreCase(String str):字符串比较,忽略大小写
3.contains(String str):判断是否包含
4.startsWith(String prefix):判断是否以指定的字符串开头
5.endsWith(String suffix):判断是否以指定的字符串结尾
6.isEmpty():判断调用者是否为空串
/*
* 判断功能
* */
public class Demo04 {
public static void main(String[] args) {
String str1 = "xyz";
String str2 = "XYz";
System.out.println(str1.equals(str2));//false
System.out.println(str1.equalsIgnoreCase(str2));//true
String str3 = "";
System.out.println(str3.isEmpty());//true
}
}
模拟用户登录:正确用户是admin,密码是123
键盘录入用户名和密码,一共有三次机会,如果录入错误,提示还剩下几次机会,最后一次,提示“机会已用完,账户已锁定”
录入正确,提示“登录成功”
4.String类型的获取功能
1.length()
2.charAt(int index)
3.substring(int beginIndex)
4.substring(int beginIndex,int len):包含头不包含尾
5.indexOf(String str)
6.indexOf(char ch)
7.indexOf(String str,int fromIndex)
5.String类型的转换功能
1.getBytes():将当前字符串,转成字节数组
2.toCharArray()
3.toUpperCase()
4.toLowerCase()
5.contact()
键盘录入 “i lOVE jAva”–>”I Love Java”
6.String类型的其它方法
1.trim()
2.replace(String oldStr,String newStr):替换旧串
public class Demo05 {
public static void main(String[] args) {
String str = "xyaddalkxyja";
System.out.println(str.replace('a', '1'));
System.out.println(str.replace("xy", "#"));
}
}