Object,scanner,String,StringBuffer,Java中基本类型的包装类型等
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Object,scanner,String,StringBuffer,Java中基本类型的包装类型等相关的知识,希望对你有一定的参考价值。
一、Scanner类
Scanner类:简单文本扫描器
1、键盘录入步骤:
(1)需要创建键盘录入对象:Scanner 键盘录入对象=new Scanner(System.in);
(2)导包:import java.util.Scanenr(快捷键:ctrl+shift+o);
(3)接收数据:XXX 变量名= 键盘录入对象.nextXXX();(例如:int 变量名=键盘录入对象.nextInt();)。
2、构造方法
public Scanner(InputStream source):以输入流形式录入数据。
InputStream:字节输入流。
InputStream in = System.in ; //底层执行返回的是一个字节输入流(标准输入流)。
3、常用方法
public boolean hasNextXXX():判断当前扫描器是否有下一个可以录入的XXX类型数据。
4、注意事项
(1)键盘录入两个int类型的数据,可分别输出。
(2)键盘录入两个String类型的数据,可分别输出。
(3)先录入一个String类型的数据,再录入int类型的数据,可分别输出。
(4)先录入一个int类型的数据,再录入String类型的数据,分别输出时出现错误。
原因:录入的第二个数据是字符串类型,录入下一个数据需要"空格"本身也是一个字符串,空格未被录入。
解决方法:录入第二个数据前,重新创建键盘录入对象。
例如:
5、常见异常
java.util.InputMismatchException:录入的数据和接收的数据类型不匹配异常。
二、Object类
Object:类层次结构的根类,每个类都使用 Object 作为超类(父类)。
1、常用方法
(1)public int hashCode()返回该对象的哈希码值。可理解为地址值,但不是实际意义的地址值。
(2)public final Class getClass()返回此Object的运行时类。
(3)public String getName()以String形式返回(class类的一个方法)。
例如:
toString方法:public String toString(); 返回该对象的字符串表示。建议所有子类都重写此方法。 未重写toString方法时,输出的是地址值;若不想直接输出地址值,则需重写toString()方法。
(4)Equals方法:public boolean equals(Object obj)表示其他某个对象是否与此对象“相等”。其中:A、==:比较的是地址值是否相等。
B、equals:Object类中的方法,,默认比较的是地址值是否相同(equals方法底层实际执行的两个对象在==,比较是地址值)。但是在自定义类中重写此方法后,比较的则是两个对象的内容是否相等。
C、例如:
(5)clone()方法:protected Object clone()创建并返回此对象的一个副本。Object类clone()方法执行特定的复制操作。
A、若此对象的类不能实现接口 Cloneable,则会抛出 CloneNotSupportedException即克隆不支持异常,所有的数组都被视为实现接口 Cloneable。
B、在使用clone()方法时,需在自定义的类中实现cloneable接口,并在该类中重写clone方法,否则无法调用。
C、调用clone方法时出现异常CloneNotSupportedException ,解决方法:将异常抛到方法声明上。
D、例如:
实现类:
测试类:
三、String类
String:表示字符串,字符串是常量,其值在创建之后不能更改。 String是一种特殊的引用类型,默认值null。String对象不可变,所以可共享。
1、String常用的构造方法
(1)String():无参构造。
(2)String(byte[] bytes) :将字节数组转换成字符串。
(3)public String(byte[] bytes, int index,int length):将字节数组的一部分转换成字符串。
(4)public String(char[] value):将字符数组转化成字符串 。
(5)toCharArray():将字符串转换成字符数组。
(6)public String(char[] value, int index, int count):将字符数组的一部分转换成字符串。
(7)public String(String original):将一个字符串常量构造成一个字符串对象。
2、String类的常用的判断功能
(1)boolean equals(Object obj):将此字符串与指定对象比较。
(2)boolean equalsIgnoreCase(String str)将此字符串数组与另一个Str字符串比较,不考虑大小写。
(3)boolean contains(String str):判断当前字符串中是否包含str子字符串 (重点)。
(4)boolean startsWith(String str):以当前str字符串开头(重点)。
(5)boolean endsWith(String str):以当前str字符串结尾(重点)。
(6)boolean isEmpty():判断字符串是否为空。
3、String类常用方法:
(1)public int length()返回此字符串的长度。
相关面试题:数组、字符串、集合中的求长度方式是什么?
解:数组中是length属性,字符串中是length()方法,集合是获取集合的元素数:size() 。
(2)public String concat(String str):字符串的特有功能,拼接功能。
4、String类的常用获取功能
(1)public int length()获取字符串的长度。
(2)public char charAt(int index)返回指定索引处的字符。
(3)public int indexOf(int ch)返回指定字符在此字符串中第一次出现的索引。
(4)public int indexOf(int ch,int fromIndex)返回在此字符串中第一次出现指定字符的索引,从指定索引开始搜索。
(5)public int indexOf(String str)返回指定子字符串在此字符串中第一次出现的索引。
(6)public int indexOf(String str,int fromIndex)返回此字符串中第一次出现指定字符串的索引,从指定索引开始搜索。
5、String类的常用截取功能
(1)public String substring(int beginIndex):从指定位置开始截取,默认截取到末尾,返回新的字符串。
(2)public String substring(int beginIndex, int endIndex):从指定位置开始到指定位置末尾结束,包前不包后,包左不包右。
6、String的常用转换功能
(1)public byte[] getBytes() :将字符串转换为字节数组。
(2)public char[] toCharArray() :将字符串转换成字符数组(重点)。
(3)public static String valueOf(int i):将int类型的数据转换成字符串(重点),这个方法可以将任何类型的数据转化成String类型。
(4)public String toLowerCase():字符串中所有的字符转为小写。
(5)public String toUpperCase():字符串中所有的字符转为大写。
7、String类型的其他功能
(1)public String replace(char oldChar,char newChar):将当前字符串中的某个字符替换掉成新的字符。
(2)public String replace(String oldStr,String newStr):将当前中的某个子字符串替换掉成新的字符串。
(3)public String trim():去除字符串两端空格。
(4)public int compareTo(String anotherString)按字典顺序比较两个字符串,该比较基于字符串中各个字符的Unicode值。
该方法返回int值的计算方法:
A、首先将每个字符串表示为字符数组;
B、获取每个字符数组的长度len1、len2;
C、获取两个字符数组长度的较小值lim;
D、定义一个索引变量k,k从0开始:
a、当k小于两个字符数组长度的较小值lim值时:
(a)依次获取两个数组中k从0到lim的索引对应的字符数组值成为两个新的字符数组c1,c2;
(b)依次比较两个新的字符数组c1、c2中每个索引对应的字符值:
若c1[k]!=c2[k],则return c1[k]-c2[k];
若c1[k]==c2[k],则return c1-c2;
b、当k小于lim值不成立时,return len1-len2。
8、String类重要特点
(1)字符串一旦被赋值,其值不能被改变。
A、直接把一个常量值赋给String时,它是先在方法区的字符串常量池中是否有当前字符串,有则直接返回它的地址值,若没有,就在字符串常量池中开辟新空间。
B、通过new给String类型赋值时,会直接开辟新空间。
(2)String类本身重写了equals方法,无需再重写,比较的是内容是否相等。
四、StringBuffer类(对象类型)
线程安全的可变字符序列,字符串缓冲区。
线程安全→同步→执行效率低,例如:银行网站等。
线程不安全→不同步→执行效率高,例如:新闻网站等。
1、StringBuffer的构造方法
(1)StringBuffer() :无参构造,初始容量16。
(2)StringBuffer(int capacity) :指定容量构造一个字符串缓冲区。
(3)StringBuffer(String str):构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
2、StringBuffer的获取功能
(1)public int length()返回长度。
(2)public int capacity()返回当前容量(如果超过容量,系统自动分配)。
3、StringBuffer的添加功能
(1)public StringBuffer append(String/boolean等) :在字符串缓冲区中追加数据(在末尾追加),并且返回字符串缓冲区本身(实际开发中用的多)。
(2)public StringBuffer insert(int offset,String str):将当前str字符串添加到指定位置处,返回字符串缓冲区本身。
4、StringBuffer的删除功能
(1)public StringBuffer deleteCharAt(int index):移除指定位置的字符。
(2)public StringBuffer delete(int start,int end):移除从start处到end-1处的子字符串。
5、StringBuffer的反转功能
public StringBuffer reverse() :将缓冲区中的字符序列反转取代,返回其本身。
6、StringBuffer的截取功能
(1)public String substring(int start):从指定位置开始截取,默认截取到末尾,返回值不在是缓冲区本身,是一个新的字符串。
(2)public String substring(int start,int end) :从指定位置开始到指定位置结束截取,包前不包后,返回值不在是缓冲区本身,是一个新的字符串。
7、StringBuffer的替换功能
public StringBuffer replace(int start,int end,String str) 从指定位置开始到指定位置结束,用新的str字符串去替换,返回值是字符串缓冲区本身。
8、常见面试题
(1)StringBuffer,String,StringBuilder的区别:
解:StringBuffer和StringBuilder都是一个可变的字符序列,提供一个缓冲区,两者都看做容器。
StringBuffer:线程安全的,同步的,执行效率低,执行效率虽然低,但是优于String类型,并且是可变的字符序列,提供了缓冲区(里面存储的均为字符),会释放掉,在内存角度优于String类型。
StringBuilder:线程不安全的,不同步的,执行效率高,单线程中优先采用StringBuilder。
String:不可变字符序列,String定义时会在常量池中开辟空间,较耗费内存。
(2)StringBuffer和数组的区别:
解:a、数组:可以存储多个数据的容器,并且多个数据的类型必须一致,数组长度功能为length属性;
c、StringBuffer:是容器,它在缓冲区始终存储的只能字符串类型的数据,获取缓冲区的长度为length()方法。
五、Java中基本类型对应的保证类型。
目的:为了将基本数据类型可以和String类型之间进行互相转换。
1、byte Byte
2、short Short
3、int Integer
4、long Long
5、float Float
6、double Double
7、char character
8、boolean Boolean
六、Integer类
Jdk5以后的特性:自动拆装箱。
Int→integer:装箱,integer是int类中的包装类类型。
Intteger→int:拆箱。
1、获取Integer最值功能
(1)public static final int MAX_VALUE获取最大值。
(2)public static final int MIN_VALUE获取最小值。
2、Integer提供了静态功能
(1)public static String toBinaryString(int i)将十进制数转换为二进制数。
(2)public static String toOctalString(int i)将十进制数转换为八进制数。
(3)public static String toHexString(int i)将十进制数转换为十六进制数。
3、Integer的构造方法
(1)public Integer(int value)
(2)public Integer(String s)
4、int类型与String类型相互转换的方法
(1)int→String:valueOf(int i) ;
(2)String→int:parseInt(String s);
七、Character类
Character 类在对象中包装一个基本类型 char 的值。Character 类型的对象包含类型为char 的单个字段。
1、构造方法:public Character(char value).
2、判断功能:
(1)public static boolean isDigit(char ch)确定指定字符是否为数字。
(2)public static boolean isLowerCase(int ch): 确定指定字符是否为小写字母字符。
(3)public static boolean isUpperCase(int ch):确定指定字符是否大写字母字符。
3、转换功能:
(1)public static int toLowerCase(int codePoint)
(2)public static int toUpperCase(int codePoint)
八、Math类
Math类被final修饰,其方法均为静态,包含用于执行基本数学运算的方法,如初等指数,对数,平方根等。
1、public static int min(int a,int b)返回两个int值中较小的一个。
2、Public static double random()返回带正号的double值,该值大于等于o.o,小于1.0的伪随机值,random取值范围:[0.0,1.0)
以上是关于Object,scanner,String,StringBuffer,Java中基本类型的包装类型等的主要内容,如果未能解决你的问题,请参考以下文章
AttributeError: Can only use .str accessor with string values, which use np.object_ dtype in pandas(
PrintStream 类型中的方法 printf(String, Object[]) 不适用于参数 (...)
PrintStream 类型中的方法 printf(String, Object[]) 不适用于参数 (...)