java基础中的--------API+Object+Scanner+String---下次再说StringBuilder

一、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", "#"));

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值