Java基础学习–javaApi
1.javaApi文档下载
链接:https://pan.baidu.com/s/1uXaMFWsulQp39AXXnNGRJg 提取码:fxkf
2.scanner类
使用方法:
- public String next(); 接收用户录入的字符串, 结束标记是: 空格
- public String nextLine();接收用户录入的字符串, 结束标记是: 换行符(\r\n)
实例:
//1. 创建对象.
Scanner sc = new Scanner(System.in);
//2. 提示用户录入
System.out.println(“请录入一个字符串”);
//3. 接收
//String s1 = sc.next();
String s1 = sc.nextLine();
//4. 输出
System.out.println(s1);
常见问题:用nextInt()接收整数, 再用nextLine()接收字符串, 导致字符串无法接收。
原因分析:nextInt()是识别到换行符之后才结束,但不接受换行符。从而使nextLine()也接收到了上一个遗留下的换行符,从而导致直接结束。
解决方案:都用nextLine()接受,对于整数通过Integer.parseInt()方法将其转换为整数。
3.object类
概述:Object类是所有类的父类, 所有的类都直接或者间接继承自Object类.
构造方法:只有一个空参构造public Object()
成员方法:
- public String toString(); 返回对象的字符串表示形式(即: 地址值), 无意义, 建议子类重写该方法.
- public boolean equals(Object obj);比较两个对象是否相等, 默认比较的是地址值, 无意义, 子类一般都会重写该方法
问: == 和 equals()的区别。
答:== 表示 对内存地址进行比较,equals()是方法,可以修改成对内容进行比较
4.string类
概述:String代表字符串类, 即: 由多个字符组成的一串数据。字符串的本质就是一个字符数组.
构造方法:
- public String() 解释: 空参构造,创建一个空白字符串对象, 不包含任何内容.
- public String(String s) 解释: 把字符串数据封装成字符串对象.
- public String(char[] value) 解释: 把字符数组的数据封装成字符串对象.
- public String(char[] value, int index, int count) 解释: 把字符数组的一部分数据封装成字符串对象.
- public String(byte[] bys) 解释: 把字节数组的数据封装成字符串对象.
- public String(byte[] bys, int index, int count) 解释: 把字节数组的一部分数据封装成字符串对象.
一般使用: String a = “aaa”;
字符串比较:
- == 比较
String s1 = “abc”;
String s2 = “abc”;
char[] s = {‘a’, ‘b’, ‘c’}
String s3 = new String(s);
String s4 = new String(s);
结果:s1和s2比较是true,s3和s4比较是false。
原因:== 比较是内存地址,使用new String()方法是在堆上开辟新的空间,而直接创建字符串时,是在方法区的常量池中保存,如果相同的常量不会新建,而是指向同一个内存地址。
- equas()比较
结果:s1、s2、s3、s4的值都相同。
原因:string类重写了equals()方法,比较是值。
- 其他比较方法
equalsIgnoreCase() 对值比较且不区分大小写。
常见问题:对String类的字符串进行拼接、反转都需要构建一个新的字符串对象,增加操作还浪费空间。
解决方法:通过Java提供的StringBuilder类来解决这个问题
5.Stringbuilder
概述:StringBuilder是一个可变的字符序列, 也叫字符串缓冲区类。
构造方法:
- public StringBuilder() 解释: 创建一个空白可变字符串对象, 它不含有任何内容。
- public StringBuilder(String str) 解释: 根据字符串的内容, 来创建可变字符串对象。
Stringbuilder重写了tostring()方法
常用方法:
- append() 添加字符串
eg:
StringBuilder sb = new StringBuilder();
//2.通过append()方法, 往sb对象中添加"hello",然后用sb2对象接收.
StringBuilder sb2 = sb.append(“hello”);
//3.打印对象sb和sb2的结果, 并观察.
System.out.println("sb: " + sb); //sb: hello
System.out.println("sb2: " + sb2); //sb2: hello
System.out.println(sb == sb2); //true
发现两个对象一起改变,原因两个对象的值指向同一个内存地址,同时append()方法也可以连续添加。 sb.append(“”).append(“”).append(“”);
- reverse() 反转字符串
StringBuilder sb3 = sb2.reverse();
同样两个对象是指向同一个内存地址,所以对象sb2和sb3值相同。
StringBuilder和String之间的相互转换:
String对象 -> StringBuilder对象,带参构造, 创建StringBuilder对象。
public StringBuilder(String str);
StringBuilder对象 -> String对象,StringBuilder类中的toString()方法, 返回该对象的字符串形式。
public String toString();
6.Arrays类(工具类)
概述:它是针对数组进行操作的工具类。提供了把数组转成字符串,对数组排序等功能。
成员方法:
public static String toString(int[] arr) 解释: 把int类型的数组转成其对应的字符串形式
public static void sort(int[]arr) 解释: 对给定的int数组, 按照元素升序的顺序进行排序.
Arrays类的特点:Arrays类中有一个私有的空参构造方法, 这样做的目的是: 不让用户通过构造方法来创建Arrays类的对象.。且Arrays类的成员都是静态的, 可以通过类名点的形式直接调用。
工具类特点:构造方法私有化;成员方法都是静态的。
7.包装类
**概述:**为了对基本类型进行更多更方便的操作, Java就针对每一种基本类型提供了一个对应的引用类型, 这就是包装类。
基本类型 | 对应的包装类 |
---|---|
byte | Byte |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
7.1 integer
概述:Integer 类是基本类型int所对应的包装类, 该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法.
构造方法:
- public Integer(int value) 解释: 把int类型的数据封装成其对应的Integer对象.
- public Integer(String s) 解释: 把字符串类型的整数封装成其对应的Integer对象。注意: 这里传入的必须是纯数字类型的字符串.
int类型和String类型的相互转换
- int类型 -> String类型
方式1:String s1 = 10 + “”;
方式2:String s1 = String.valueOf(10)
- String类型 -> int类型
String s1 = 100;
int num = Integer.parseInt(s1);
特殊基本类型转换:
- 字符和字符串之间相互转换
String s1 = ‘a’ + “”;
char ch = “abc”.charAt(1);
- 字符数组和字符串之间相互转换
String str = “abcd”; char[] chs = str.toCharArray();
String str2 = new String(chs);
自动拆装箱:
把基本类型的数据封装成其对应的包装类型, 则称之为自动装箱
int a = 10; Integer i2 = a
把包装类型的对象拆解成其对应的基本类型, 则称之为自动拆箱
Integer i1 = new Integer(a); int b = i2
8.Date类
**概述:**Date类表示特定的瞬间,精确到毫秒. 它是java.util包下的类, 用之前需要先导包。
构造方法:
- public Date(); 解释: 根据当前系统时间, 获取其对应的Date对象.
- public Date(long date); 解释: 根据给定的整数, 获取其对应的Date对象.
成员方法:
- public long getTime() 解释: 获取毫秒值.
- public void setTime(long time) 解释: 设置时间, 单位是毫秒值.
9.SimpleDateFormat类
概述:SimpleDateFormat类, 叫日期格式化类, 专门用来格式化和解析日期的.
构造方法:
- public SimpleDateFormat() 解释: 根据空参构造, 创建SimpleDateFormat类的对象.
- public SimpleDateFormat(Stringpattern) 解释: 根据给定的模板, 创建其对应的SimpleDateFormat类的对象.
成员方法:
- public final String format(Datedate) 解释: 用来格式化日期的.
- public Date parse(Stringsource) 解释: 用来解析字符串形式的日期的.
10.calendar类
概述:日历类, 是方便我们操作日期的. 它里边的功能大多数是用来替代java.util.Date类的功能的。
构造方法:
Calendar类可以理解为是工具类, 因为它是一个抽象类, 所以外界无法通过new的方式创建本类对象.
问: 如何创建Calendar类的对象呢?
答: 通过**Calendar#getInstance()**方法实现.
成员变量:
- public static final int YEAR 解释: 表示年份.
- public static final int MONT 解释: 表示月份.
- public static final int DATE 解释: 表示年中的某一天.
- public static final int DAYOFMONTH 解释: 表示月中的某一天.
- public static final int DAYOFWEEK 解释: 表示星期中的某一天.
成员方法:
- public static CalendargetInstance(); 解释: 创建Calendar类型的子类对象.
- public int get(int field) 解释: 根据日历字段, 获取其对应的值.
- public void set(int year, intmonth, int day) 解释: 设置时间为指定的年, 月, 日.
- public void add(int field, intcount) 解释: 修改指定的时间为指定的偏移量, 例如: 往前推2天, 推3个月, 往后推2年.