API的使用与说明
API:应用程序编程接口
简单理解:API就是别人写好的东西,我们不需要写直接使用即可
java API:指的就是JDK中提供的各种功能的java类
比方说我们现在想用API帮助文档,使用Scanner类,然后再进行输入一个小数,再输出
第一步:打开帮助文档
第二步 查看Scanner类的构造方法
第三步查看Scanner类的返回值,看看我们要如何传参过去
第四步:代码测试
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数");
double a = sc.nextDouble();
System.out.println("输入的数是:"+a);
}
}
字符串-String
java不会字符串,开发就得凉一半
1.Strin是Java定义好的一个类。定义在java.lang 包中
所以使用的时候不需要导包
2.Java 程序中的所有字符串文字 (例如“abcdefg”)。
都被实为此类的对象
3.字符串不可变,它们的值在创建后不能被更改
创建字符串的几种方式
1.使用直接赋值方式
String s1 = "abc";
System.out.println(s1);
运行结果:
abc
2.使用new的方式,获取一个字符串对象
String s2 = new String();
System.out.println("@" + s2 + "!");
运行结果:
@!
3.传递一个字符串,根据传递的字符串内容再创建一个新的字符串对象
String s3 = new String("avg");
System.out.println(s3);
运行结果:
avg
4.传递一个字符数组,根据字符数组的内容再创建一个新的字符串对象
char[] chs = {'a','b','c','d'};
String s4 = new String(chs);
System.out.println(s4);
运行结果:
abcd
修改字符串
需求:我要修改字符串内容
注意:字符串是不能发生改变的,所以我们需要先把abc变成一个字符数组,数组是可以发生变化的
char[] chs = {'a','b','c','d'};
String s4 = new String(chs);
System.out.println(s4);
运行结果:
abcd
传递一个字节数组,根据字节数组的内存再创建一个新的字符串对象,拿到ASCLL码值的字母,再把它转换成字符串
byte[] bytes = {97,98,99,100};
String s5 = new String(bytes);
System.out.println(s5)
运行结果:
abcd
字符串的比较
String a1 = "abc";
String a2 = new String("abc");
System.out.println(a1==a2);
==号到底比的是什么?(基本数据类型)
这个分两种情况来讨论的 ,如果是比较的基本数据类型,那么就是比较的是具体的值
int a = 10;
int b = 20;
System.out.println(a == b);
运行结果:
false
此时的代码,比较的就是10跟20这两个具体的值是否相等,现在很简单,肯定是不相等的,也就是基本数据类型比较的数据值,结果是false
==号到底比的是什么?(引用数据类型)
比较的是s1跟s2这两个变量记录的地址值是否相同,我们通过内存图可以知道,每一次new出来的它都是一块新的小空间,我们现在看到了两个new,在堆内存中它就是有两个小空间s1记录的是第一个小空间的地址值,s2记录的是第二个小空间的地址值。这两个地址值肯定不一样啊,这里的结果就是false
String s1 = new String("abc");
String s2 = new String("abc");
System.out.println(s2==s1);
运行结果:
false
字符串比较1
像这种直接赋值的字符串它是在"串池"里面,所以在这里它会去检查串池当中有没有abc ,它检查的时候会发现它已经有了abc了,所以说这个时候它是不会创建新的,而是会复用。在这个情况下s1跟s2它记录的地址值是一样的,这里的结果就是true
String s1 ="abc";
String s2 ="abc";
System.out.println(s1==s2);
运行结果
true
首先来看s3它是new出来的,只要是new出来的,它就是在堆里面开辟了一个小空间,我们在来看s4里面所存放的abc它是在串池里面的。所以s3它记录的是堆里面的地址,s4记录的就是串池里面的地址,两个地方都不一样,结果肯定是false
String s3 = new String("abc");
String s4 = "abc";
System.out.println(s3 == s4);
运行结果:
false
字符串比较2
boolean equals方法(要比较的字符串) 完全一样结果才是true,否则为false
我们实例化两个对象,s1跟s2,我们使用equals方法,我们线s1调用equals方法然后,圆括号里面填上所比较的变量名
String s3 = new String("abc");
String s4 = "abc";
boolean result1 = s3.equals(s4);
System.out.println(result1);
运行结果:
true
如果说我们改动一下s4里面的内容,换成一个大写的Abc,看看结果
String s3 = new String("abc");
String s4 = "Abc";
boolean result1 = s3.equals(s4);
System.out.println(result1);
运行结果:
false
false表示假,equals在比较的时候,要完全一样
boolean equalslgnoreCase(要比较的字符串) 忽略大小写的比较
String s3 = new String("abc");
String s4 = "Abc";
boolean result1 = s3.equalsIgnoreCase(s4);
System.out.println(result1);
运行结果:
true