Java中的常用类与方法,封装,多态与内部类

  1. Object类:是所有类的父类。一个类在没有声明的情况下是默认继承于Object类的,存放在:java.lang包中。

  1. toString方法():一般用于对对象信息的打印,Object类提供的toString()方法,所有的类都拥有这个方法。 作用:是对象以字符串的形式进行处理。

  1. getClass方法():作用:返回正在运行的类是哪一个。

  1. equals(Object obj)方法:用来判断两个对象是否相等。

  1. instanceof:比较两个对象是否相同。 当两个类之间存在继承关键,或者接口与类之间存在实现关系,可以使用instanceof来判断一个对象是否属于某一个类型。

  1. finalize()方法:当一个对象没有任何引用执行的时候,满足垃圾自动回收机制的要求,就会自动调用这个方法,不是我们调用的,是虚拟机自己调用的。

  1. clone():只要是实现了cloneable()这个接口的类就可以调用这个方法,这个方法会产生一个新的对象。这个接口的实现是调用方法的前提,否则就会抛出异常。

protected Object clone() throws CloneNotSupportedException public class CloneNotSupportedException extends 异常抛出,表明该clone类方法Object被称为克隆对象,但该对象的类无法实现Cloneable接口。 覆盖clone方法的应用程序也可以抛出此异常以指示对象无法或不应被克隆。

  1. 基本数据类型的封装类型:

在java中8中数据类型都有一个与之相对应的封装类,因为基本数据类型不能调用方法和属性。可以理解为基本数据类型的功能和特点都封装在封装类型中。可以通过封装类型来去访问数据类型的属性和方法。

基本数据类型

封装类型

byte

Byte

shrot

Short

int

Integer

long

Long

float

Float

double

Boudle

char

Character

boolen

Boolen

  1. String<-------->基本数据类型

  1. Sring转数据类型: 基本数据类型 自定义变量名 = 封装类型.parsexxxx(“值”)

  1. 基本数据类型装String类型的方法 1、直接使用""进行连接 34 + "" ----> 变为一个字符串 2、调用String类中的重载方法valueOf() 其余的方法请参考String类的api中,关于valueOf的使用 static String valueOf(int i) 返回 int参数的字符串 int形式。 static String valueOf(char[] data) 返回 char数组参数的字符串 char形式。 3、调用对应的基本数据类型中的toString方法,一般格式是: static String toString(XXX 变量名) static String toString(int i) 返回一个 String指定整数的 String对象。

  1. int <--------> Integer类型之间的转换

1、int类型转Integer类型 int转换成Integer方法 1、通过构造方法 int a = 10; Integer x = new Integer(a); Integer y = new Integer(a + "");

2、通过Integer类中的静态方法 参数是int类型返回值是Integer类型 使用valueOf() Integer z = Integer.valueOf(a);

底层自动装箱操作的时候会自动调用这个方法 2、Integer类型转int类型

int转换成Integer方法

1、通过构造方法 int a = 10; Integer x = new Integer(a); Integer y = new Integer(a + "");

2、通过Integer类中的静态方法

参数是int类型返回值是Integer类型 使用valueOf() Integer z = Integer.valueOf(a); 底层自动装箱操作的时候会自动调用这个方 法

  1. char类型:

主要介绍几个常用的方法,其他的可以查看API static boolean isDigit(char ch) 确定指定的字符是否是数字。 static boolean isLetter(char ch) 确定指定的字符是否是一个字母。 static boolean isLowerCase(char ch) 确定指定的字符是否是小写字符。 static boolean isUpperCase(char ch) 确定指定的字符是否为大写字符。 static boolean isWhitespace(char ch) 根据Java确定指定的字符是否为空格。

  1. Sting类

  1. String类型的概述:String类代表字符串,java中如"abc"都作为此类的对象 。字符串不变; 它们的值在创建后不能被更改。 字符串缓冲区支持可变字符串。 因为String对象是不可变的,它们可 以被共享。

  1. String 类中常用的构造函数 String() 初始化新创建的 String对象,使其表示空字符序列。 String(byte[] bytes) 通过使用平台的默认字符集解码指定的字节数组来构造新的 String 。 String(byte[] bytes, String charsetName) 构造一个新的String由指定用指定的字节的数组解码charset 。 String(char[] value) 分配一个新的 String ,以便它表示当前包含在字符数组参数中的字符序列。 String(String original) 初始化新创建的String对象,使其表示与参数相同的字符序列; 换句话说,新创建的字符串是参数字符串的副 本。

  1. String常用方法

获取到字符串的长度 :length()

int len = s1.length();

获取部分字符串:substring String substring(int beginIndex) (是从下标开始) 返回一个字符串,该字符串是此字符串的子字符串。 String substring(int beginIndex, int endIndex) 返回一个字符串,该字符串是此字符串的子字符串。 字符串是否以指定字符串开头(startWith)或者结尾(endsWith) boolean startsWith(String prefix) 测试此字符串是否以指定的前缀开头。 注意大小写

boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结尾

字符串中是否包含另外一个字符串contains,indexOf boolean contains(CharSequence s) 当且仅当此字符串包含指定的char值序列时才返回true

int indexOf(int ch) 返回指定字符第一次出现的字符串内的索引。从前往后

int lastIndexOf(String str) 返回指定子字符串最后一次出现的字符串中的索引。从后往前

将字符串转换成byte[] 或者 char[] getBytes toCharArray

(以ASCII码转换)

判断两个字符串是否相同 boolean equals(Object anObject) 不忽略大小写 将此字符串与指定对象进行比较。 boolean equalsIgnoreCase(String anotherString) 忽略大小写 将此 String与其他 String比较

toString:重写了Object的方法,输入格式是字符串的内容

isEmpty:判断字符串是否为空 获取指定索引位置上的字符charAt char charAt(int index) 返回 char指定索引处的值 String toLowerCase() 将所有在此字符 String使用默认语言环境的规则,以小写。 String toUpperCase() 将所有在此字符 String使用默认语言环境的规则大写。

字符串替换: replace,replaceAll String replace(char oldChar, char newChar) 替换一个 返回从替换所有出现的导致一个字符串 oldChar在此字符串 newChar 。 String replace(CharSequence target, CharSequence replacement) 替换多个 将与字面目标序列匹配的字符串的每个子字符串替换为指定的字面替换序列。

字符串连接:concat join

去掉字符串前后空格trim

比较两个字符串的顺序:compareTo 0代表相等 <0:代表字符串比参数小 >0:代表字符串比参数大

  1. 字符串(String,StringBuffer,StringBuilder)

String:字符串常量

String类型不可以改变的,每次改变的时候都会产生新的对象,然后将调用信息的索引指向最新的元素。性能相对来说比较差,经常要改变内容的话,不建议使用String

StringBuffer:字符串变量(线程安全,适用于多线程的情况下)字符串变量,对它进行操作的时候,不会产生新的变量,直接对原来的元素进行修改,性能比较好

StringBuilder:字符串变量(线程不安全,适用于单线程情况下)不能保证线程的安全性,所以在操作的时候速度最快,性能最好,但是安全性比较低.如果是单线程可以使用StringBuilder

性能上排序:

StringBuilder > StringBuffer > String

总的来说:

String:适用于少量的字符串操作

StringBuffer:适用于多线程下在字符串缓冲区里面进行大量的字符串操作StringBuilder:适用于单线程下,在字符串缓冲区里面进行字符串的操作

  1. StringBuffer类

1、构造函数

StringBuffer() 构造一个没有字符的字符串缓冲区,初始容量为16个字符。 StringBuffer(CharSequence seq) 构造一个包含与指定的相同字符的字符串缓冲区 CharSequence 。 StringBuffer(int capacity) 构造一个没有字符的字符串缓冲区和指定的初始容量。 StringBuffer(String str) 构造一个初始化为指定字符串内容的字符串缓冲区。

  1. Integer类:

  1. 静态常量: static int BYTES

用于表示二进制补码二进制形式的 int值的字节数。static int MAX_VALUE一个持有最大值一个 int可以有2 31 -1。static int MIN_VALUE的常量保持的最小值的 int可以具有,-2 31。static int SIZE用于表示二进制补码二进制形式的 int值的位数。static 类 TYPE类原始类型 int的 类实例

  1. 构造方法 : Integer(int value) 构造一个新分配的 Integer对象,该对象表示指定的 int值。 Integer(String s) 构造一个新分配 Integer对象,表示 int由指示值 String参数 只能写能够转换为int类型的字符串,如果不是int类型NumberFormatException

  1. 静态方法:

将11转换为2进制,然后统计二进制数中1的个数

int count = Integer.bitCount(11);

System.out.println("11的二进制数中1的个数:" + count);

十进制转二进制

String s1 = Integer.toBinaryString(11);

System.out.println("11的二进制数为:" + s1);

十进制转十六进制

System.out.println(Integer.toHexString(20));

十进制转八进制

System.out.println(Integer.toOctalString(20));

将前面字符串的元素以后面第二个参数radix的进制进行转换

Integer x = Integer.valueOf("24",8);

System.out.println(x);

将两个数进行比较之后将最大值拿出来

int m = Integer.max(20,50);

System.out.println(m)

  1. 多态

  1. 概念:

每种事物多种体现的形式,父类的引用指向子类的对象或者接口的引用指向实现类对象,就是多态。 多种状态 在面向对象的语言中,接口的不同的实现方式就是多态 多态性: 允许你将你的父类引用设置成为一个或者更多的子类对象

  1. 格式:

1、普通类中

父类 自定义变量名 = new 子类()

2、抽象类中

抽象类 自定义变量名 = new 抽象类的子类();

3、接口的多态的格式

接口名 自定义变量名 = new 实现类名称();

  1. 引用数据类型的转换:

多态的前提: 类和类之间存在继承关系(直接或者间接继承都可以) 类和接口之间存在实现关系 类型转的时候: 向上转型(自动类型转换,小的转大的) 向下转型(强制类型转换,大的转小的,存在风险!!!比如数据丢失) 向上转型 当有子类对象赋值给一个父类的引用的时候,就是向上转型 父类类型 自定义变量名 = new 子类类型(); 向下转型重要的要求:只有一个已经向上转型的子类对象才能向下转型(为了防止转型的时候出现异 常:ClassCastException,为了防止这种事情的出现,我们一般要使用instanceof关键字,先来判断这个对象是否是 可以转型子类对象)

  1. 多态的好处和弊端 :

父类的引用指向子类对象时F f = new S();就会发生向上转型,即把子类类型的对象转换成父类类型,向上转型的好处 是隐藏了子类类型,提高了代码的可扩展性。 但向上转型也有弊端,只能使用父类共性的内容,无法使用子类特有的功能,功能有所限制。

多态的优势:

降低了类之间的耦合度

面向抽象编程

提高了扩展性

  1. 多态里面的成员变量:

当父子类中出现了同名的变量的时候,多态调用变量的时候: 简单记:编译和运行都参考的是等号的左边 多态里面的成员方法: 编译时期:参考引用变量所属的类,如果没有类能够调用的方法,那么就编译失败 运行时期:参考引用变量所指向的对象所属的类,并运行对象所属的类中的成员方法 简单记:编译的看左边,运行的时候看右边 编译的时候要到接口或者抽象类或者父类中去看,有没有你要调用的这个方法,如果有我们就直接执行子类 中重写的这个方法,然后将内容进行处理。 编译失败的情况就是,你调用一个方法,这个方法是属于子类或者实现类自己的,那么现在在等号的左边就找不到这个方法,找不到就会出现编译失败。

  1. 匿名对象

  1. 匿名对象的概念

是指创建的时候只有创建对象的语句,没有把对象的地址给到某一个变量。

创建一个匿名对象 ,只能使用一次,使用完成之后就没有了。

  1. 匿名对象的特点

创建匿名对象直接使用没有对象名 new People().eat();//eat方法被一个没有名字的对象调用了

匿名对象在没有指定其引用变量的时候只能使用使用一次 如果想要再次使用这个方法,必须重新创建一个匿名对象

匿名对象可以作为方法接收的参数,方法的返回值使用

当对象使用完毕之后就消失,无法再次调用,内存中也没有 了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值