
标题图Java面试集合(六)
的回顾,对于final可以修饰常量,方法,和类,一旦常量定义好后就不可改变,而方法,使用final来修饰方法,方法不可重载,继承,重写,final使用来修饰类,该类不能被继承。
笼统abstract,不能够有对象,即不能进行实例化,但又构造方法,在笼统修饰类时,这个笼统类,不肯定有笼统方法,但是在类中有笼统方法,那么这个类就肯定是笼统类。
在笼统类中的所有笼统方法,子类一旦继承笼统类,就要重写父类(即笼统类)中的所有笼统方法,但是连子类都是笼统类就不使用,假如该子类继承了笼统的父类,子类也是笼统类,就不使用。
笼统方法是没有方法体的,由于笼统方法是笼统功能的,在子类中实现,笼统方法可以被重载,即参数等不同。笼统方法不能再使用static/final/private来修饰。
接口interface的笼统方法使用public abstract来修饰,属性使用public static final来修饰。
接口是没有实例化对象的,也没有构造方法
内部类的分类为,方法的内部类,成员的内部类,静态内部类,匿名内部类。
包的基础(package)和垃圾回收机制基础。
所有类的父类Object,由于任何一个类都是直接或者者间接的继承Object类,都是Object的子类,Object是类层次结构的根类,存在java.lang.Object中。
getClass可以获取对象的实际类型toString可以返回对象的地址equals可以判断两个对象能否相等
对象和类的关系进行判断:instanceof
class A {}class B extends A {}interface D{}class C extends B implements D {}B b = new C();b instanceof A --- trueb instanceof B --- trueb instanceof C --- true b instanceof D --- true构造方法:
public Object()
finalize()方法:java的垃圾回收时机Object的toString()方法:返回的是对象的字符串形式Object的equals()方法:比较两个对象能否相等复习:
以0b/0B作为开头 (0~1,满2进1)以0作为开头(0~7,满8进1)没有特殊标识(0~9,满10进1)以0X/0x作为开头(09,af,满16进1)进制间的转化
十进制转其余进制:除以对应的进制数,而后取余数其余进制转十进制:从最低位依次开始,按位次乘以进制的位次次幂,而后求和二进制转八进制,也是从低位开始,每三位二进制为一组,产生一个八进制数字,最高位不足三位,就补0,凑齐三位就可。
口诀:三变一
八进制转二进制,每一位八进制数都会产生三位二进制数字,不足三位就补0就可。
口诀:一变三
二进制转十六位进制:口诀为四变一十六位进制转二进制:口诀为一变四Bin为二进制,Oct为八进制,Dec为十进制,Hex为十六进制
在 Java中的字符串属于对象,那么Java 中提供了 String 类来创立和操作字符串,即是用对象;由于String类修饰的字符一旦被创立就不可改变,所以当对字符串进行修改的时候,需要用到StringBuffer 和 StringBuilder 类。
String类是使用来修饰字符串的,字符串是一种特殊的对象,一旦初始化就不可被改变,使用String修饰的字符串变量是不可以被改变的。
例子:
//定义一个字符串String str = "hello world";String str = new String("hello world");对于String类,存在java.lang.String中,String类代表字符串,如何实现字符串的字面值,就是使用此类来实例的。
String类,代表字符串的类,如何的字符串都是String的对象。字符串是作为常量,被双引号包着的为常量,被初始化即不可被更改。那么接下来举个例子效果。
String i = "123";System.out.println("i="+i);//结果为i=123假如增加以下String i = "123";i = "12"System.out.println("i="+i);//结果为i=12// 看到这个效果,你会认为不是改了吗?// 其实不是的,而是新创立了一个对象而已。在String中,对象是不可变的,但可以共享的。那么怎样了解是共享的呢?这里引出常量池的概念,如下:
//多个引使用指向同一个字符串String str1 = "dashu"String str2 = "dashu";System.out.println(str1==str2);//结果true为true代表它们同时指向一个字符串,即为对象。创立了一个str1对象,字符串常理为"dashu",那么再次创立一个对象时,常理名相同,在常量池中发现有相同的"dashu",那么就同时指向一个值。
常量池是放置常量的,假如有相同的值,就不使用创立对象,第一个创立的字符串放在常量池中,假如要使用的时候,就拿来使用。
// 字符串在底层是以字符数组形式来存储的String str = “ab”; String str = new String(“ab”);String s = “a”;s = s + “b”;//内容相同,但是创立方式不同的情况String str3 = "abc"String str4 = new String ("abc");System.out.println(str3==str4);//falseSystem.out.println(str3.equals(str4));//true//结果falsetrue// 100个元素拼接成一个字符串,用+进行拼接// 整个过程产生301个String[] arr = { /*100个元素*/ };// 为 1String str = “”;for(String s : arr){str += s; // 每拼接1次,要多产生3个对象。// 一共100个元素,拼接100次,意味着要多产生300个元素}
String代表是字符串的类,而字符串本身就是常量,字符串在底层是以字符数组形式存储的,字符串是共享的,在常量池中
对于字符串是常量,它的值在创立后时不可以改变的,但字符串缓冲区支持可变的字符串。
StringBuffer类为java.lang中,StringBuffer为字符串缓冲,StringBuffer为线程安全的可变字符序列,相似String的字符串缓冲区,缓冲区不能改,但里面可以改,通过某方法可以改变序列的长度和内容。
StringBuffer提供了主要的两种方法,一,append(),二,inset()
StringBuffer为一个字符串缓冲区,相对于一个容器,长度是可变的,可以存储任意类型数据,是将任意数据转变为字符串进行存储,StringBuffer提供了对数据的很多的操作功能。
例子:
StringBuffer sb = new StringBuffer();sb.append("da");sb.append("shu");System.out.println(sb);//sb.append("da").append("shu");假如要操作数据,要转换为字符串。StringBuffer所有存储的元素都被转成字符串才可用。
String str = sb.append("da").append("shu").toString();在指定位置插入元素
sb.insert(2,"hehe");//插入StringBuilder的效率要远高于使用“+”,需要拼接多个字符串,建议用StringBuilder。
StringBuilder是线程不安全的,StringBuffer是线程安全的
StringBuilder为java.lang类,是一个可变的字符序列,提供了与StringBuffer兼容的API,StringBuffer和StringBuilder方法是一模一样的。
StringBuilder不同步,不安全。假如同时append(),delete(),insert(),会导致出错,多线程访问不安全,增加修饰synchronized就可。在jdk1.5版本后,推出StringBuilder被使用作一个StringBuffer的简易替换,使用在字符串缓冲区被单个线程用的时候。
封装类有:Byte , short , Integer , Character , long , Float , Double 记住这些类即可以了,这些都是Number的子类。
包装类
byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBooleanvoidVoid自动封箱/自动装箱
底层默认调使用valueOf方法进行封箱
自动拆箱
使用***Value()进行拆箱
自动封装,将基本类型的变量赋值给对应的引使用类型对象
自动拆箱,将引使用类型的变量赋值给对应的基本类型变量
public class Test{ public static void main(String[] args){ int i = 5; Integer integer = new Integer(i);//装箱 //拆箱 int i2 = integer.intValue(); }}//public class Test{ public static void main(String[] args){ int i = 5; Integer integer = new Integer(i); Interger i2 = i;//自动装箱 int i3 = integer;//自动拆箱 }}//public class Test{ public static void main(String[] args){ char c = 'Vic'; character c2 = c; c3 = c2; }}Date代表日期的类
Date(): 为分配Date对象,并初始化对象Date(int year, int month, int date)
Calendar 类是一个笼统类
public abstract class Calendar extends Object//Calendar 提供了一个类方法 getInstance Calendar rightNow = Calendar.getInstance();Java、 Android中的其余知识 深入讲解 ,有兴趣可以继续关注