java笔记10.28/10.29

来源:互联网 发布:阿里巴巴一键铺货淘宝 编辑:程序博客网 时间:2024/05/21 06:14

常用类

一 Object类
类 Object 是类层次结构的根类。每个类都使用 Object 作为超类(父类)。所有对象(包括数组)都实现这个类的方法。

方法举例:

(1)public int hashCode() 返回该对象的哈希码值
【hashCode()—–>通过哈希算法(哈希表:hashtable)—->地址值(不是实际意义上的地址值!)】
(2)public final Class getClass() 返回此 Object 的运行时类
【 区别 public String getName()以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。获取当前正在运行的这类的全路径名称! 】
(3)public String toString() 返回该对象的字符串表示(建议所有子类都重写此方法)
(4)public boolean equals(Object obj) 指示其他某个对象是否与此对象“相等”。
【面试题:==和equal()方法的区别
==: 比较的是两个对象的地址值是否相同,
equals(): 方法默认比较的是两个对象的地址值是否相同,如果重写了Object类中的equals()方法,那么默认比较就是两个对象的内容是否相同】
(5)protected Object clone()创建并返回此对象的一个副本
throws CloneNotSupportedExcei on

二 Scanner类

用来创建一个文本扫描键盘录入)
Scanner sc = new Scanenr(System.in);

System类中的静态字段:
public static final InputStream in: 标准输入流
InputStream :字节流 InputStream is = System.in ; 实质:抽象类多态
public static final OutputStream out: 标准输出流发步骤:
1)创建键盘录入对象
2)录入数据
3)输出

方法举例
判断的功能:
细节:可以添加逻辑判断
hasNextXXX(); 在录入数据之前,加上判断功能,判断是否由下一个可以录入的XXX类型的数据
nextXXX();//通过录入获取这个int类型的数据
举例:
public boolean hasNextInt()
nextInt();

nextInt():录入int类型的数据
nextLine(): 录入一个字符串类型
Scanner类中的注意事项:
先录入int类型的数据,在录入String类型数据,第二次录入的数据没有接收到,直接输出结果了,由于”回车”才能接收数据
,回车换行符导致的!
解决方案:
在第二次录入String类型数据之前,需要重新创建键盘录入对象录入String类型
三 String 类
代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现;字符串一旦被赋值,其值不能再改变。
String类常用的构造方法:
(1)String():表示一个空字符序列。
(2)public String(byte[] bytes,Charset ch):默认字符集(编码格式):GBK,如果是GBK格式,可以不写第二个参数
(3)public String(char[] value):将字符数组构造成一个字符串
(4)public String(char[] value,int index,int length):将部分的字符数组构造成一个字符串
(5)public String(String original):通过字符串常量构造一个字符串对象
面试题:
String s = “hello”和String s = new String(“hello”) 两个有什么区别?分别创建了几个对象
答:第一个创建了一个对象
第二个s创建两个对象(堆内存中有new String(),然后字符串常量池中也有这样一个字符串常量(开辟空间的地址))
String类的中常用的判断功能:
boolean equals(Object obj):当前该对象是否obj这个对象是否相等;
boolean equalsIgnoreCase(String str):比较字符串是否相等,忽略大小写
boolean contains(String str):判断str这个字符串是否包含在当前字符串中
boolean startsWith(String str):是否以str子字符串开头
boolean endsWith(String str):判断是否以str子字符串结尾
boolean isEmpty():判断字符串是否为空

字符串变量相加,先开辟空间,在相加
字符串常量相加:首先在字符串常量池找,有没有当前这个常量值,有,就直接返回,没有,需要创建!

public class StringDemo2 {    public static void main(String[] args) {        String s1 = "hello";          String s2 = "world";        String s3 = "helloworld";        System.out.println(s3 == s1 + s2);// false        System.out.println(s3.equals((s1 + s2)));//true ,         System.out.println(s3 == "hello" + "world");//true        System.out.println(s3.equals("hello" + "world"));//true

String类的获取功能:
int length():获取字符串长度功能
char charAt(int index):返回的是索引处对应的字符
int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引
为什么这里的字符用int来定义: 97 ‘a’
int indexOf(String str):返回指定子字符串在此字符串中第一次出现的索引
int indexOf(int ch,int fromIndex):返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
int indexOf(String str,int fromIndex):返回在此字符串中第一次出现指定字符串处的索引,从指定的索引开始搜索
String substring(int start):从指定位置开始截取字符串,默认截取到末尾
String substring(int start,int end):从指定位置开始截取到指定位置结束,包前(start索引)不包后(end索引)
练习:
把数组中的数据按照指定个格式拼接成一个字符串举例:
int[] arr = {1,2,3}; 输出结果:[1, 2, 3]

public class StringTest2 {    public static void main(String[] args) {        //1)定义一个数组,静态初始化        int[] arr = {1, 2, 3} ;        //将这个数组转换成字符串最终来封装成功能        String result = arrayToString(arr);        //直接输出        System.out.println("result:"+result);    }    /**     * 两个明确     *      明确返回值类型:String类型     *      明确参数类型:int   int[] arr     * */    public static String arrayToString(int[] arr){        //定义一个空字符串        String result = "" ;        //拼接左中括号        result += "[" ;        //遍历数组        for(int x = 0 ; x < arr.length ; x ++){            //判断            if(x==arr.length-1){                result += arr[x] ;                result += "]" ;            }else{                result += arr[x] ;                result += ", " ;            }        }        return result ;    }

String类的转换功能(重点)
byte[] getBytes():将字符串转换字节数组
char[] toCharArray():将字符串转换成 字符数组 (开发中经常使用)
static String valueOf(char[] chs):将字符数组转换成字符串
static String valueOf(int i):将一个int类型的数据转换成字符串
注意:
String类中的valueOf()可以将任何数据类型转换成字符串
String toLowerCase():将字符串全部转成小写
String toUpperCase():将字符串全部转换成大写
String concat(String str):字符串拼接方法
String类中的其他功能:
替换功能:
public String replace(char oldChar,char newChar):将字符串中某一个字符用新的字符替换
public String replace(String oldStr,String newStr):将字符串中某一个子字符串用新 的字符串去替代
去除字符串两端空格:
public String trim()
两个字符串进行比较:
public int compareTo(String anotherString) 是Comparable接口中的方法(该接口可以实现一个自然排
Comparator接口可以比较器排序
compareTo源码:

private final char value[];     //s1= "helloworld" ;    //s2= "hel" ;    //将s1和s2的字符串自动转换成了字符数组    //s1:'h','e','l','l','0'    //s2:'h','e','l'  public int compareTo(String anotherString) {anotherString==>s2="hel"        int len1 = value.length; //s1.length=   5        int len2 = anotherString.value.length;// s2.length: = 3        int lim = Math.min(len1, len2);// Math.min(5,3) ;=====>int lim = 3 ;        char v1[] = value;//'h','e','l','l','0'        char v2[] = anotherString.value;//"hel"        int k = 0;        while (k < lim) {       k< lim=3            char c1 = v1[k];    // char c1 = 'h','e','l','l','0' = v1[k] = 'h'            char c2 = v2[k];    //char c2 = 'h','e','l' = v2[k] = 'h'            if (c1 != c2) {                return c1 - c2;            }            k++;        }        return len1 - len2; // len1 - len2 = s1.length() - s2.lenth() = 5 -3 = 2     }

四 StringBuffer 类
StringBuffer:线程安全的可变字符序列

面试题:
StringBuffer和String 的区别?
StringBuffer会构造一个字符串缓冲区,从内存角度考虑,一般情况使用StringBuffer比较多(在单线程程序中使用StringBulider替代
StringBuffer:线程不安全,单线程单纯为了提供执行效率!)
String:普通的一个字符串,从内存角度考虑,耗费空间!

StringBuffer的构造方法:
public StringBuffer ()构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符
public StringBuffer(int capacity)构造一个不带字符,但具有指定初始容量的字符串缓冲区
public StringBuffer(String str)
构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。该字符串的初始容量为 16 加上字符串参数的长度。

常用的功能:
public int length():获取字符串长度数
public int capacity():获取当前字符串缓冲区的容量
StringBuffer的删除功能:
public StringBuffer deleteCharAt(int index):删除指定位置处的字符,返回的是字符串缓冲区本身!
public StringBuffer delete(int start,int end):删除从指定位置开始到指定位置结束的字符,返回的是字符串缓冲区本身!
StringBuffer的反转功能:
public StringBuffer reverse():将此字符串中的字符序列直接反转
StringBuffer的替换功能:
public StringBuffer replace(int start, int end,String str)
从指定位置开始到指定位置结束的字符用str子字符串去替代
StringBuffer的截取功能:
public String substring(int start):从指定位置默认截取到末尾,返回值是一个新的字符串
public String substring(int start,int end):从指定位置开始截取到指定位置结束,包前不包后,返回一个新的字符串

原创粉丝点击