API总结

2021-04-14 08:27

阅读:594

标签:JAVA

API

一.Scanner类:
1、键盘录入的步骤:
1)需要创建键盘录入对象:Scanner sc =new Scanner(System.in);
2)导入包:import java.util.Scanenr; ctrl+shift+o
3)接收数据:XXX(类型) 变量名= sc(键盘录入对象).nextXXX();
Eg:int a = sc.nextInt();
2.Scanner类的构造方法:
Public Scanner(InputStream source){//以输入流的形式录入数据
//InputStream:字节输入流
InputStream in = System.in;//底层执行返回的是一个字节输入流(标准输入流)
}
3.Scanner类中的一些常见方法:
1).在Scanner类中提供一个判断功能:
Public boolean hasNextXXX();{//当前扫描器判断是否有下一个可以录入的XXX类型数据
nextXXX();
}
Java.util.InputMismatchException:录入的数据和接收的数据类型不匹配异常
package org.westos.API;

import java.util.Scanner;//ctrl+Shift+o导包

public class APIDemo1 {
public static void main (String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//录入对象
System.out.println("请输入一个数据:");
if(sc.hasNextInt()) {
int num = sc.nextInt() ;
System.out.println("num:"+num);
}else {
System.out.println("您输入的数据类型不匹配.");
}

}

2).问题:
键盘录入两个int类型的数据,分别输出,没有问题;
键盘录入两个String类型的数据,分别输出:没有问题;
先录入一个String类型的数据,在录入int类型的数据,没有问题;
先录入一个int类型的数据,再录入String类型的数据,有问题。第二个数据是字符串类型,又由于录入下一个数据要"空格"本身是一个字符串。
b是空格,b的值没有录入!
如何解决:重写创建键盘录入对象
Eg:package org.westos.API;

import java.util.Scanner;

public class APIDemo {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//接收数据
System.out.println("请输入一个数据:");
int a = sc.nextInt();
System.out.println("num:"+a);
//接收字符串

    //System.out.println("请输入一个字符串:");
    //String b = sc.nextLine();
    //System.out.println("String:"+b);

    //重新创建一个键盘录入对象
    System.out.println("请输入一个字符串:");
    Scanner sc2 = new Scanner(System.in);
    //接收字符串
    String b = sc2.nextLine();
    System.out.println("String:"+b);

}

}
二.Object类:
1.Object:是类层次结构的根类.每个类都使用 Object 作为超类(父类)
2.Object类中的一些方法:
A).public int hashCode()返回该对象的哈希码值 . 把它理解地址值(不是实际意义的地址值)
B).public final Class getClass()返回此 Object 的运行时类
Class类中有一个方法:
C).public String getName()以 String 的形式返回此
Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。
返回值是Class(JavaSE最后一天:反射)
public class ObjectDemo {

public static void main(String[] args) {

    //创建一个学生对象
    Student s1 = new Student() ;
    System.out.println(s1.hashCode());//118352462

    System.out.println("-------------------------");

    Class c1 = s1.getClass() ;//Object 的运行时类
    System.out.println(c1);//class org.wesots_01.Student :以Class形式表示的当前类
    String name = c1.getName() ;
    System.out.println(name);//以字符串显示当前的类:org.wesots_01.Student :全类名

    System.out.println("-------------------------");

    //链式编程
    String str = s1.getClass().getName() ;
    System.out.println(str);

}

}
D).public String toString(); 返回该对象的字符串表示。%E7%9B%B4%E6%8E%A5%E8%BE%93%E5%87%BA%E5%AF%B9%E8%B1%A1%E5%90%8D%E7%A7%B0:%E5%AE%9E%E9%99%85%E6%89%A7%E8%A1%8C%E4%BA%86Object%E4%B8%AD%E7%9A%84toString(),%E8%BE%93%E5%87%BA%E7%9A%84%E5%85%A8%E7%B1%BB%E5%90%8D@%E5%8D%81%E5%85%AD%E8%BF%9B%E5%88%B6%E6%95%B0%E6%8D%AE
br/>直接输出对象名称:实际执行了Object中的toString(),输出的全类名@十六进制数据
我现在输出对象名称,不想让toString()直接输出的是一个地址值(对象的地址值)

就需要重写Object中的toSring(),一般情况:自动生成即可 建议所有子类都重写此方法。
Integer:是int类型的包装类类型,它里面提供了一个方法
public static String toHexString(int i):以十六进制表示对字符串形式。
E).public boolean equals(Object obj)指示其他某个对象是否与此对象“相等”。
==:比较的值相等(地址值)
equals:本身属于Object类中的方法,默认比较的是地址值是否相同
按照正常情况:equals方法底层实际执行的两个对象在==,比较是地址值;假如:学生的年龄和姓名一致,看成同一个人
在自定义的类中,重写Object中的equals()方法,比较是两个对象的成员变量的值是否相同.自动生成即可!
三.String:
1.String表示字符串:
1).字符串是常量;它们的值在创建之后不能更改。
String是一种特殊的引用类型:默认值:null
2).构造方法:
String():无参构造;
String(byte[] bytes) :将字节数组转换成字符串;
public String(byte[] bytes, int index,int length):将字节数组的一部分转换成字符串;
public String(char[] value):将字符数组转化成字符串; toCharArray():将字符串转换成字符数组;
public String(char[] value, int index, int count):将字符数组的一部分转换成字符串;
public String(String original):将一个字符串常量构造成一个字符串对象。
3).常用的方法:
Public int length()//返回此字符的长度
4).面试题:
数组中有没有length(),字符串中有没有length(),集合中有没有length()?
数组中没有length()方法,只有length属性;
字符串中有length()方法;
集合中没有length(),获取集合的元素数:size() (后面讲)。
5).面试题:
String s1 = new String("abc");
String s1 = "abc" ;
这两个分别创建了几个对象?
6).String作为形式参数:它的效果和基本类型是一样的,形式参数的改变对对实际参数没有影响 (它一旦赋值,不能被改变)
2.String类:
1).String类的常用获取功能:
public int length():获取字符串的长度;
public char charAt(int index)返回指定索引处的字符;
public int indexOf(int ch)返回指定字符在此字符串中第一次出现处的索引;
问题:既然传入的字符:这里为什么用int类型
‘a‘和97 都表示a
public int indexOf(int ch,int fromIndex)返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索;
public int indexOf(String str)返回指定子字符串在此字符串中第一次出现处的索引;
public int indexOf(String str,int fromIndex)回在此字符串中第一次出现指定字符串处的索引,从指定的索引开始搜索。
截取功能
public String substring(int beginIndex):从指定位置开始截取,默认截取到末尾,返回新的字符串;
public String substring(int beginIndex, int endIndex):从指定位置开始到指定位置末尾结束,包前不包含.
遍历一个数组:
四.StringBuffer:

  1. StringBuffer::线程安全的可变字符序列.
    • 线程(后面多线程中讲)
      线程的安全问题,是难点(多线程属于难点) 多线程------>解决了多线程安全问题------>是死锁 :生产消费模式(Java中等待唤醒机制)
      线程安全 --->同步的---->执行效率低
      举例:银行的网站,医疗平台...
      线程不安全---->不同步---->执行效率高
      举例:新闻网站,XXX论坛...
      2.面试题:
      StringBuffer和String的区别?
      前者是一个可变的字符序列,后者是不可变的字符序列;
      如果从内存角度考虑,String定义的时候,会在常量池中开辟空间,比较耗费内存,而StringBuffer,字符串缓冲区(里面存储的全部都是字符串),它会释放掉 ;
      3.StringBuffer的构造方法:
      StringBuffer() :无参构造的形式,初始容量16;
      StringBuffer(int capacity) :指定容量构造一个字符串缓冲区;
      StringBuffer(String str) 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容.
      4.StringBuffer的获取功能:
      public int length()返回长度;
      public int capacity()返回当前容量 (如果超过容量,系统自动分配(存储字符串的时候,英文的)).
      5..StringBuffer的添加功能
      (实际开发中用的多):public StringBuffer append(String/boolean....) : 在字符串缓冲区中追加数据(在末尾追加),并且返回字符串缓冲区本身
      public StringBuffer insert(int offset,String str):
      将当前str字符串添加到指定位置处,它返回字符串缓冲区本身
      6.StringBuffer的删除功能:
      public StringBuffer deleteCharAt(int index):移除指定位置处的字符..
      public StringBuffer delete(int start,int end):移除从指定位置处到end-1处的子字符串.
      7.public StringBuffer reverse() :将缓冲区中的字符序列反转取代,返回它(字符串冲)本身.
      8.StringBuffer的截取功能:
      public String substring(int start):从指定位置开始截取,默认截取到末尾,返回值不在是缓冲区本身,而是一个新的字符串
      public String substring(int start,int end) :从指定位置开始到指定位置结束截取,包前不包后, 返回值不在是缓冲区本身,而是一个新的字符串.
      9.StringBuffer的替换功能:
      public StringBuffer replace(int start,int end,String str)
      从指定位置到指定位置结束,用新的str字符串去替换,返回值是字符串缓冲区本身

API总结

标签:JAVA

原文地址:http://blog.51cto.com/13723820/2108753


评论


亲,登录后才可以留言!