3、常用API

一、String类

1、String类概述

a、String 类适用于描述字符串类型的事物,字符串一旦被建立,就不会改变,因为它默认被final修饰。
b、“对String对象的任何改变都不影响到原对象,相关的任何change操作都会生成新的对象”。
c、空串与null的区别:空串是没有任何字符串而null是不再指向字符串,空串可以作为对象调用方法,一个空格算作一个字符。

2、String类构造方法详解

a、String(byte[] bytes)
把一个字节数组转换成字符串
b、String(byte[] bytes, int index, int length)
把一个字节数组的一部分转换为字符串 (从指定索引开始,截取指定长度)
c、String(char[] value)
把一个字符数组转换成字符串
d 、String(char[] value, int index, int length)
把一个字符数组的一部分转换为字符串 (从指定索引开始,截取指定长度)
e、String类的构造方法可以把任意的字节数组和字符数组转换为字符串.

3、创建字符串对象的方式
第一种  String s = new String("abc");
第二种  String s ="abc";
注意:
数组:使用的是数组的  .lenght 属性
字符串:使用的是字符串的 .length()方法

4、String常见面试题

a、如何理解字符串一旦初始化就不可以被改变

String s = "hello";
s += "world";
System.out.println(s); //结果:helloword。
注:不可以被改变说的是常量池中的值,并不是引用s(s是可以重新被赋值的)

b、两种创建字符串的区别

String s1 = new String("abc");
String s2 = "abc";
s1、s2有区别吗?
第一种方式:第一种方式在内存中存在两个"abc"字符串,一个是在常量池中,一个是在堆内存当中.
第二种方式:在内存中只存在一个"abc"在常量池中.
5、String类的判断功能

a、boolean equals(Object obj) ://判断两个字符串是否相同(区分大小写)

b、 boolean equalsIgnoreCase(String str) ://判断两个字符串是否相同(不区分大小写)

c、 boolean contains(String str)://判断这个字符串是否包含给定的字符串

d、 boolean startsWith(String str)://判断字符串是否以给定的字符串开始

e、 boolean endsWith(String str)://判断字符串是否以给定的字符串结束

f、 boolean isEmpty()://判断字符串是否为空

g、以下程序运行会出现什么结果

String s1 = "";
String s2 = null;
System.out.println(s1.isEmpty()); //true
System.out.println(s2.isEmpty()); //NullPointerException空指针异常
6、模拟用户登录

思路回顾:
A:假设已经存在有了用户名密码,用String 定义就OK了
B:键盘录入数据用户名和密码.
C:把数据进行比较,如果正确就进入,不正确继续判断
D:给三次机会,明确了循环次数,用for循环解决
注:C、D步骤代码提示

if(userName.equals(name) && passWord.equals(pwd)){
                    System.out.println("输入正确,登陆成功");
                    break;
               } else{
                    //如果不匹配则提示相应的信息,并告知剩余次数。
                    //三次都输错,直接冻结账号
                    if ((2-i)==0) {
                         System.out.println("账号已被锁定,请与老刘联系");
                    }else {
                         System.out.println("登陆失败,您还有"+(2-i)+"次机会");
                    }
7、String类的获取功能

int length()
获取字符串的长度

char charAt(int index)
获取指定索引处出现的字符

int indexOf(int ch)
获取字符串中指定字符第一次出现的索引

int indexOf(String str)
获取字符串中指定字符串第一次出现的索引

int indexOf(int ch, int fromIndex)
返回在此字符串中第一次出现指定字符处的索引,
从指定的fromIndex开始搜索。

int indexOf(String str, int fromIndex)
返回指定字符串中第一次出现指定字符串处的索引,从指定位置开始搜索

String substring(int start)
截取字符串从指定位置开始,到末尾.

String substring(int start, int end)
截取字符串从指定位置开始到指定位置结束.

注:字符串中找索引有一个原则:包左不包右.

8、String类的转换功能

byte[] getBytes()
把字符串转换成字节数组

char[] toCharArray()
把字符串转换成字符数组

static String ValueOf(char[] chs)
把字符数组转换成字符串

static String valueOf( int i )
把(基本类型)int类型的一个数据转换为字符串类型

String toLowerCase()
把字符串全部转换为小写

String toUpperCase()
把字符串转换为大写

String concat(String str)
把两个字符串拼接.

9、String类的其它功能

String replace(char oldChar, char newChar )
用指定新的字符替换旧的字符

String replace(String oldString, String newString)
用指定新的字符串去替换老的字符串(新串和老串的长度可以不同)

String[] split(String regex)
以指定的字符串为标记切割字符串,返回一个字符串数组.

String trim()
去除字符串两端的空格

int compareTo(String antherString)
把两个字符串进行比较,返回两个字符串的Unicode差或长度差。

如:

public class Base {
      static public void main(String[] args) {
//         String a = " abc";
//         String b = " abcdef";
//         System.out.println(a.compareTo(b));//return a.length()-b.length();结果是:3
//         String a = " abc";
//         String b = " abcdef";
//         System.out.println(a.compareTo(b));//return a.length()-b.length();结果是:-3
//         String a = " abc";
//         String b = " bcdef";
//         System.out.println(a.compareTo(b));//return a-b=97-98=-1;结果是:-1
           String a = "bc";
           String b = "abcdef";
           System. out.println( a.compareTo( b)); //return a-b=98-97=1;结果是:1
     }
}

二、StringBuffer

  • 概述
    也称字符串缓冲区,StringBuffer类似一个字符容器,当在其中添加或删除字符时,并不会产生新的StringBuffer对象 。
    StringBuffer采用的是缓冲区机制,一旦开始,首先开辟一块空间,然后,随着数据的增多,还可以继续开辟空间,这些操作针对的是使用同一个对象,是线程安全的。

  • 构造方法
    StringBuffer();//创建一个StringBuffer对象默认长度是16
    StringBuffer(int capacity);//创建一个指定长度的StringBuffer对象.
    StringBuffer(String s);//相当把String类型转换成StringBuffer类型

  • 成员方法
    public int length() ;//字符个数,实际长度
    public int capacity(); //字符容量,理论长度
    注:String到StringBuffer的转换可以通过构造方法实现

  • 添加功能
    public StringBuffer append ( int i ) ;//在末尾追加元素《任意类型》
    public StringBuffer insert ( int index, String i ); //在指定索引处增加元素i.

  • 删除功能
    StringBuffer deleteCharAt ( int index ) ;//删除指定索引处的字符
    StringBuffer delete ( int start , int end );//删除从位置开始到指定索引结束

  • 反转
    StringBuffer reverse();//把字符串反转

  • 替换
    StringBuffer replace(int start, int end, String str);//把指定索引到指定索引之间的字符用一个字符串替换

  • 截取
    String substring(int start);//从指定索引开始截取到末尾
    String substring(int start, int end);//从指定索引开始截取到指定索引

三、Integer类

  • 概述:
    java基本类型对应的包装类。用于能够对基本数据进行更多的操作。

  • 构造方法:(以Integer为例)
    a:

Integr(int value);
int num =100;
Integer i= new Integer(num);
System.out.println(i.tiString());

b:

 Integer(String s);注意:这里字符串必须是由数字字符组成的字符串。

c:

String ss="100";
//下行被注释的代码会报错:NumberFormatException(数据格式异常)
//String s1="100abc";
Integer i=new Integer(ss);
System.out.printlnln(i);
  • 例子:要判断某个数据是否在int范围内,请问怎么做?
思路:把int范围内的最大值和最小值找到,然后判断即可。
public static double pow (double a ,double b)--->Math类中的方法
  • Iteger类的方法
if(numInteger.MIN_VALUE)
{
     //该数字是int范围内的值
}
注:public static final int MAX_VALUE//public static final int MIN_VALUE
a: public static String toBinaryString(int i);//把一个int类型的值转换成对应的二进制形式
b: public static String toOctalStirng(int i);//把一个int类型的值转换为对应的八进制形式
c: public static String to HexString(int i);//把一个int类型的值转换为对应的十六进制

注:因为是静态方法,所以采用类名调用方式//Integer.toBinaryString(int i);

  • public static int parseInt(String s)//把String类型转换成int类型
    注:
    throws NumberFormatException将字符串参数作为有符号的十进制整数进行解析。除了第一个字符可以是用来表示负值的 ASCII 减号 '-' ('\u002D') 外,字符串中的字符都必须是十进制数字。返回得到的整数值,就好像将该参数和基数 10 作为参数赋予 parseInt(java.lang.String, int) 方法一样。

四、Date类

注意:Date类去查API,要查util包下的date类。

  • Date类的使用
    a: Date();//是一个无参的构造函数,用来创建当前日期时间的Date对象。
    b: Date(long date)//通过给定的毫秒值获取日期对象
    c: public long getTime( );//根据日期对象获取毫秒值。
    d: public void setTime(long time);//设置对象的毫秒值

  • DateFormat类格式化

//Date-->String 转换过程。
使用的方法是:public final String format(Date date);
步骤;
Date d=new Date( );//创建格式对象。
SimpleDateFormat sdf=new SimpleDateFormat( Gyyyy年MM月dd日 HH:mm:ss,E);//按SmpleDateFormat对象的日期格式化模板格式化日期对象。
String s= sdf. format(d );
System,out.println(s );
  • 查看API注意事项
    a:是否是lang包下,不是得话要导包;
    b:看一下这个类或接口的描述
    c: 看这个类的修饰符
    d: 想要使用这个类就要学习这个类的构造方法,以便创建对象。
    e:如果以后在一个类中你认为它应该具备某个功能,但是在这个类中没有找到,就要去它的父类中找,因为父类有的就相当于子类也具备.
  • SimpleDateFormat格式化解析指定格式的日期
    a: 创建一个SimpleDateFormat对象
    b: 定义日期格式模板“Gyyyy年MM月dd日 HH:mm:ss,E”。
    c:将日期格式模板传入
    d:调用SimpleDateFormat的父类DateFormat的format(Date date)方法
    如:
     Date date1 =new Date();
     System.out.println( date1);
     String s="yyyy年MM月dd日 HH:mm:ss,E";
     SimpleDateFormat df1= new SimpleDateFormat( s);
     System.out.println( df1.format( date1));
package cn.itcast;

import java.text.SimpleDateFormat;
import java.util.Date;

/*
* 获得当前时间,并把当前时间输出,
* 然后把时间的格式变成咱们中国人习惯的格式,
*     比如: "2014年07月16日 09:58:58 星期三"
*
* 日期 ----->字符串
*/
public class DateFormatTest {
     public static void main(String[] args) {
          //获得当前时间,并把当前时间输出,
          Date d = new Date();
          System.out.println(d);
         
          //2014-11-15       //2014年07月16日
          //1. 创建格式化对象SimpleDateFormat,需要制定格式
          String geshi = "yyyy年MM月dd日 HH:mm:ss E";
          //用给定的模式和默认语言环境的日期格式符号构造
          SimpleDateFormat sdf = new SimpleDateFormat(geshi);
         
          //Date--String     格式化          fomrat
          //2. 调用格式化方法,将Date格式化成指定的字符串
          String str = sdf.format(d);
          System.out.println(str);
         
    
         
          //String ----- >Date 解析     parse
     }}
import java.text.SimpleDateFormat;
import java.util.Date;

/*
* 数据中有这样一个字符串
* String stringTime = "1997-07-01 00:00:00",
*
* 我们希望获取这个字符串表示的时间对象.然后把这个时间打印出来给英国人看.
* 字符串----------->日期
*/
public class DateFormatTest2 {
     public static void main(String[] args) throws ParseException {
         
          String stringTime = "1997-07-01 00:00:00";
          //1. 创建格式化对象,需要指定解析时使用的格式
          SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         
          //String  --  Date 解析   parse
          //2. 调用格式化对象的parse()  parse 从给定字符串的开始解析文本,以生成一个日期。
          Date date = sdf.parse(stringTime);
         
          System.out.println(date);
     }
}
  • Calendar类的概述和使用
    a: Calendar c=Calendar.getInstance( );//创建了Calendar对象,更严谨的说是创建了Calendar的子类对象,多态的使用。
    b: 计算一年中2月有多少天
package cn.itcast_02;

import java.util.Calendar;
import java.util.Scanner;

/*
* 请说出任意一年的2月份是多少天。
*/
public class CalendarDemo2 {
     public static void main(String[] args) {
          // 获取Calendar对象
          Calendar c = Calendar.getInstance();
          // public final void set(int year,int month,int date)
          // 注意,这里给的2其实是3月份。
          // c.set(2013, 2, 3);
          // 2013,3,3

          // public abstract void add(int field,
          // int amount)根据日历的规则,为给定的日历字段添加或减去指定的时间量。
          // c.add(Calendar.MONTH,2);
          // c.add(Calendar.DATE, -20);
         
          Scanner sc = new Scanner(System.in);
          int year = sc.nextInt();

          c.set(year, 2, 1);// 把日期设置为2013年3月1日
          c.add(Calendar.DATE, -1);// 把日期往前推1日

//          System.out.println(c.get(Calendar.YEAR));
//          System.out.println(c.get(Calendar.MONTH) + 1);
          System.out.println(c.get(Calendar.DATE));
     }}
  • 对象数组的使用
    对对象数组的理解
    其实就是原来定义这个数组中存储的数据类型是基本类型(比如说int [])
    现在定义的数组类型是引用数据类型(比如说Student[])

五、System类

  • System类包含一些有用的类字段和方法,它不能被实例化。
  • 常用的方法:

a :public static void exit ( int status)
退出虚拟机(注意:参数用作状态码,非0的状态码表示异常中止)
b :public static long currentTimeMillis()
返回当前时间的毫秒值
c:public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length )
从指定数组中复制一个数组,复制从指定位置开始,到目标数组的指定位置结束.

六、Arrays工具类

  • 概述
    Arrays工具类是针对数组操作的工具类。

  • 常用方法
    a :public static String toString( int[] a )
    把一个整形的数组转换成字符串
    b :public static void sort( int[] a )
    对数组进行排序
    c :public static int binarySearch ( int[] a, int key)
    对数组进行二分查找.(注意:本方法中如果要查找的元素不存在,返回值不一定是-1)

七、Collections工具类

  • 概述:
    Collections是针对Collection集合操作的工具类 里面定义了一些对集合操作的方法
    比如 排序,查找,反转,最值,置换
  • 常用方法
    public static void sort ( List list );//根据元素的自然顺序对list集合的元素进行排序。
    public static int binarySearch( List list, T key );//二分查找
    public static void reverse( List list );//反转
    public static T max( Collection coll );//最大值
    public static void shuffle( List list );//随机置换.

八、object类

  • 常用方法:
    a: public String toStirng();//返回该对象的字符串表示。
    注:为了让对象的显示更有意义,一般重写该方法。
    b:public boolean equals(Object obj);//指示其他某个对象是否与此对象“相等”。
    注:默认的是比较地址值,一般重写该方法,按自己的要求。

九、Math类(常用方法)

  • public static double floor(double a)
    小于等于参数的最大整数。返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数。
    特殊情况如下:

    • 如果参数值已经等于某个整数,那么结果与该参数相同。
    • 如果参数为 NaN、无穷大、正 0 或负 0,那么结果与参数相同。
  • public static double ceil(double a)
    大于等于参数的最大整数注意。Math.ceil(x) 的值与 Math.floor(-x) 的值完全相同。

  • public static int round(float a)
    返回最接近参数的 int。结果将舍入为整数:加上 1/2,对结果调用 floor 并将所得结果强制转换为 int 类型。换句话说,结果等于以下表达式的值:(int)Math.floor(a + 0.5f)

  • public static double pow(double a, double b)
    返回第一个参数的第二个参数次幂的值.

  • public static double sqrt(double a)
    返回正确舍入的 double 值的正平方根

  • public static double random()
    返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。

十、Random 类(此类的实例用于生成伪随机数流。)

  • public int nextInt(int n);//随机产生(0,n)范围内的数字,包左不包右。

十一、Scanner类

  • public int nextInt()
    将输入信息的下一个信息标记为int类型。
  • public String nextLine()
    将输入信息的下一行信息标记为String类型

你可能感兴趣的:(3、常用API)