Java基础(五)

(一)Object类
(1)Object:是类层次结构的根类.每个类都使用 Object 作为超类(父类)

public int hashCode()返回该对象的哈希码值 . 把它理解地址值(不是实际意义的地址值)
public final Class getClass()返回此 Object 的运行时类

    Class类中有一个方法:
            public String getName()以 String 的形式返回此
                             Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。

    返回值是Class(反射)
(2) Object中的一个方法:
    public String toString(); 回该对象的字符串表示

    Integer:是int类型的包装类类型
    它里面提供了一个方法
        public static String toHexString(int i):以十六进制表示对字符串形式

直接输出对象名称:实际执行了Object中的toString(),输出的全类名@十六进制数据

我现在输出对象名称,不想让toString()直接输出的是一个地址值(对象的地址值)

就需要重写Object中的toSring(),一般情况:自动生成即可
(3)public boolean equals(Object obj)指示其他某个对象是否与此对象“相等”。

==:比较的值相等(地址值)
equals:本身属于Object类中的方法,默认比较的是地址值是否相同

按照正常情况:equals方法底层实际执行的两个对象在==,比较是地址值;假如:学生的年龄和姓名一致,看成同一个人

在自定义的类中,重写Object中的equals()方法,比较是两个对象的成员变量的值是否相同.
自动生成即可!
(4) protected Object clone()创建并返回此对象的一个副本

Object 类的 clone 方法执行特定的复制操作。首先,如果此对象的类不能实现接口 Cloneable,则会抛出 CloneNotSupportedException。

    **  注意,所有的数组都被视为实现接口 Cloneable
        (二)Scanner类**

(1) Scanner类: 简单文本扫描器。

回想:键盘录入的步骤
1)需要创建键盘录入对象
Scanner sc =new Scanner(System.in);
2)导入包:import java.util.Scanenr; ctrl+shift+o
3)接收数据
XXX 变量名= sc.nextXXX();

构造方法:
public Scanner(InputStream source): 以输入流的形式录入数据的
InputStream:字节输入流:

        InputStream  in = System.in ; //底层执行返回的是一个字节输入流(标准输入流)
        (2)Scanner类的一些常见的方法:
            XXX 变量名 = 键盘录入对象.nextXXX();

在Scanner类中它提供一个判断功能:
public boolean hasNextXXX():当前扫描器判断是否有下一个可以录入的XXX类型数据
nextXXX();

    java.util.InputMismatchException:录入的数据和接收的数据类型不匹配异常
    (3)问题:
    键盘录入两个int类型的数据,分别输出,没有问题
    键盘录入两个String类型的数据,分别输出:没有问题
    先录入一个String类型的数据,在录入int类型的数据,没有问题
    先录入一个int类型的数据,在录入String类型的数据,有问题,第二个数据是字符串类型,又由于录入下一个数据要"空格"本身是一个字符串

b是空格,b的值没有录入!
如何解决:重写创建键盘录入对象
(三)String类

(1)String:表示字符串:
    字符串是常量;它们的值在创建之后不能更改。

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):将一个字符串常量构造成一个字符串对象

        常用的方法:
                                public int length()返回此字符串的长度
        (3)String字符串的最大的特点:
                                        字符串一旦被赋值,其值不能被改变
        (4)String类的常用的判断功能

    boolean equals(Object obj):将此字符串与指定的对象比较
    boolean equalsIgnoreCase(String str)将此 String 与另一个 String 比较,不考虑大小写
    boolean contains(String str):判断当前大川中是否包含子字符串  (重点)

    boolean startsWith(String str):以当前str字符串开头(重点)
    boolean endsWith(String str):以当前str字符串结尾(重点)
    boolean isEmpty():判断字符串是否为空

    public String concat(String str):字符串的特有功能:拼接功能和+拼接符是一个意思
(5) tring类的常用获取功能:

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):从指定位置开始到指定位置末尾结束,包前不包含
(6)String的常用转换功能:

public byte[] getBytes() :将字符串转换为字节数组
public char[] toCharArray() :将字符串转换成字符数组(重点)
public static String valueOf(int i):将int类型的数据转换成字符串(重点)
这个方法可以将任何类型的数据转化成String类型
public String toLowerCase():转成小写
public String toUpperCase():字符串中所有的字符变成大写
(7)String类型的其他功能:
public String replace(char oldChar,char newChar):将大字符串中的某个字符替换掉成新的字符
public String replace(String oldStr,String newStr):将大串中的某个子字符串替换掉
public String trim():去除字符串两端空格
(四)StringBuffer
(1) StringBuffer:线程程安全的可变字符序列

线程(多线程中)

线程的安全问题,是难点(多线程属于难点) 多线程------>解决了多线程安全问题------>是死锁 :生产消费模式(Java中等待唤醒机制)

线程安全 --->同步的---->执行效率低
举例:
银行的网站,医疗平台...

线程不安全---->不同步---->执行效率高
举例:
新闻网站,XXX论坛...
(2)tringBuffer的构造方法:
StringBuffer() :无参构造的形式,初始容量16
StringBuffer(int capacity) :指定容量构造一个字符串缓冲区
StringBuffer(String str) 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容

(3)StringBuffer的获取功能:
public int length()返回长度
public int capacity()返回当前容量 (如果超过容量,系统自动分配(存储字符串的时候,英文的))
(4)StringBuffer的添加功能
(实际开发中用的多):public StringBuffer append(String/boolean....) :在字符串缓冲区中追加数据(在末尾追加),并且返回字符串缓冲区本身

    public StringBuffer insert(int offset,String str):将当前str字符串添加到指定位置处,它返回字符串缓冲区本身

(5)StringBuffer的删除功能:
public StringBuffer deleteCharAt(int index):移除指定位置处的字符..
public StringBuffer delete(int start,int end):移除从指定位置处到end-1处的子字符串...
(6)StringBuffer的反转功能:
public StringBuffer reverse() :将缓冲区中的字符序列反转取代,返回它(字符串冲)本身
(7) StringBuffer的截取功能:
public String substring(int start):从指定位置开始截取,默认截取到末尾,返回值不在是缓冲区本身,而是一个新的字符串
public String substring(int start,int end) :从指定位置开始到指定位置结束截取,包前不包后,返回值不在是缓冲区本身,而是一个新的字符串
(8)StringBuffer的替换功能:
public StringBuffer replace(int start,int end,String str)
从指定位置到指定位置结束,用新的str字符串去替换,返回值是字符串缓冲区本身
注意:jdk5以后的特性:自动拆装箱
int---Interger(是int类型的包装类类型) 需要将int--->String
Interger--int:自动拆箱

char---Character: 需要char--String

为什么要类和类之间转换

要将A类类型转换成B类型,为了使用B类的功能

有时候,有需要将B类转换成A类,可能需求需要的是A类型

String和StringBuffer之间的相互转换
(五)Integer类
(1) Intege是int类型的包装类类型
Integer提供了静态功能:
public static String toBinaryString(int i)
public static String toOctalString(int i)
public static String toHexString(int i)

基本类型对应都有一个保证类型,目的就为了将基本数据类型可以String类型之间进行互相转换

  • byte Byte
  • short Short
  • int Integer (讲)
  • long Long
  • float Float
  • double Double
  • char character (讲)
  • boolean Boolean
    (2)Integer的构造方法:
    public Integer(int value)
    public Integer(String s)
    (3)如何将int转换为String类型
    valueOf(int i) ;
    将String转换为int类型
    static int parseInt(String s);
    (4)JDK5 以后提供了自动拆装箱
    可以将Integer-->拆箱 int类型
    可以将int类型--->装箱 Integer类型

    JDK5 还提供了哪些特性:
    泛型,可变参数,增强for循环(在集合中)等等..

    JDK8特性:
    Stream流 --> 表达式
    (六)Character类
    (1)Character 类在对象中包装一个基本类型 char 的值。Character 类型的对象包含类型为 char 的单个字段。
    以确定字符的类别(小写字母,数字,等等),
    构造方法:
    public Character(char value)
    (2)Character类的判断功能:
    public static boolean isDigit(char ch)确定指定字符是否为数字。
    public static boolean isLowerCase(int ch): 确定是否是小写字母字符
    public static boolean isUpperCase(int ch):确定是否大写字母字符

    (3) 两个转换功能:
    public static int toLowerCase(int codePoint)
    public static int toUpperCase(int codePoint)
    (六)数组高级部分
    (1)冒泡排序: 两两比较,大的往后放,第一次比较完毕最大值出现在最大索引处....
    (2)选择排序: 用0索引对应的元素依次后面索引对应的元素进行比较, 1索引..... 小的数据往前方法,就可以得到一个排好序的数组...
    (3)数组中的元素查找法(基本查找法)

    折半查找(二分查找) :数组一定是有序
    分析:
    A:定义最小索引和最大索引
    B:计算中间索引
    C:中间索引对应的元素和需要查找的元素比较
    相等,直接返回中间索引
    不相等:
    大了,左边找
    max = mid -1 ;
    小了,右边找
    min = mid + 1 ;
    E:重新计算中间索引 ,回到B继续查找

猜你喜欢

转载自blog.51cto.com/13670525/2108277
今日推荐