一个java类中是否可以包含多个类?
答案:可以,但是只能有一个public类,而且类名要和文件名相同
&和&&的区别
答案:两个都表示与运算,但是&&具有短路功能,如果a&&b,a为fasle,那么程序就不会再判断b的值,而&却会让程序判断两边的值。与运算:a与b,如果a为真且b为真,那么为真,只要有一方为假,则整个程序为假
以下哪个声明是错误的?
A int i = 10
B float f = 1.1
C double d = 34.4
D long m = 4990
答案是B,因为小数默认是double类型的,所以在使用float时,需要强制转换。即:float f =(float)1.1
JAVA中如何跳出当前的多重嵌套循环?
答:java中有break和continue两种方法跳出循环,break是跳出所有循环,continue是跳出本次循环。
switch语句能否作用在 byte上,能否作用在 long上,能否作用在 String上?
答:switch语句可以作用在byte,int,long上,但是不能作用在String上
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
答:整型默认是int类型,所以第一个中,s1是short类型,然后s1+1是int类型,这时候如果把short转成int,需要强制转换,所以要在前面加一个short。第二个中,+=运算会自己进行类型转换,就不会出现问题。
char型变量中能不能存贮一个中文汉字?为什么?.
答,char可以一个中文汉字,一个中文是2个字节,也就是8位,而char是8位的,所以可以存储
"=="和 equals方法究竟有什么区别?
答:==是比较两个变量的值是否相等,equals是比较两个变量所指向的内存地址是否相同,即比较的是否是同一个变量。
静态变量和实例变量的区别?
答:静态变量前面要加static,而且静态变量一旦声明,程序在运行时就会为静态变量开辟一个空间,而且静态变量只会在内存中占据一个空间,如果给静态变量多次赋值,只会在相同的变量上累加。静态变量可以直接调用而不需要实例化。
实例变量必须要new出来之后才可以使用,如果没有实例化,那么程序就不会给实例变量分配空间,所以必须要实例化之后才可以调用。
是否可以从一个 static方法内部发出对非static方法的调用?
答:不可以,因为static方法中需要调用的变量和方法必须是静态的,但是在静态方法中实例化一个对象,该实例化的对象中的变量和方法都不需要是静态的。所以静态方法只能调用静态的变量和方法,前提是你不实例化的话。
Integer与int的区别
答:int是基本数据类型,而Integer是包装类型,int如果没有值的时候,默认值是0,而Integer没有值的时候,默认值是null。Integer里面有很多的方法可以方便操作,而int没有,还有就是web中经常定义的都是Interger而不是int。
请说出作用域 public,private,protected,以及不写时的区别
答:public是当前类,整个包以及子类还有其他包都可以访问,private是只能当前类中访问,protect是当前类,当前包和子类能够访问,但是其他包都不可以访问。默认的是当前类和当前包,子类和其他包都不能访问。
Overload和Override的区别。
答:overload是重载的意思,重载是多态的一种体现,它的表现形式就是方法名相同,方法体相同,参数类型不同,参数位置不同,参数个数不同。我们称这种形式为方法的重载。
override是重写的意思,重写是指方法名相同,参数类型相同,只是方法体不同。
构造器 Constructor是否可被override?
答:可以被重载,但是不能被重写。
接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concrete class)?抽象类中是否可以有静态的 main方法?
答:
抽象方法是一种特殊的方法,只有声明,没有具体的实现。abstract void fun();
如果一个类含有抽象方法,那么这个类就是抽象类。抽象类必须用abstract关键字修饰,因为抽象类无具体的实现方法,所以不能用抽象类创建对象。抽象类不一定要有抽象方法,因为只要是用了abstract关键字修饰了的类都是抽象类,所以不写抽象方法也叫抽象类。包含抽象方法的类叫抽象类,但是抽象类中不是只能有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法。抽象方法必须为public和protected,因为抽象方法要被子类继承。抽象类不能用来创建对象。如果一个类继承了抽象类,那么子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,那么子类也必须为抽象类。
接口是interface修饰,而且接口中的变量必须是public static final变量,并且接口中的所有方法都不能有具体的实现。也就是说,接口中的所有方法都必须是抽象方法。
一个类只能继承一个抽象类,而一个类可以实现多个接口。
接口可以继承接口,抽象类可以实现接口,抽象类可以继承具体类,抽象类中可以有静态的main方法。
面向对象的特征有哪些方面
答:面向对象又叫oop,特征有继承,封装和多态。
继承是指java中的extends关键字,当一个类使用extends关键字时,表明这个类继承了上一个类,也就是父类的所有属性和方法。
封装是指将一个类的所有属性私有化,并且给外界提供一个set和get方法用于赋值,而不是直接操作类中的属性
多态是不同类对象对相同行为的不同反应,我们就把它叫做多态。实现多态的有两种形式,一种是重写,一种是重载。
oop的五大原则:
1,单一职责原则
2,开放封闭原则
3,里式替换原则
4,依赖原则
5,接口分离原则
String是最基本的数据类型吗?
答:不是,java有八种基本数据类型,分别是int,byte,long,float,double,boolean,short,char。
String是java.lang.String下的,是fina类型的,因此不能修改,不能继承。
String s = "Hello";s = s + " world!";这两行代码执行后,原始的 String对象中的内容到底变了没有?
答:没有,因为使用+号之后,相当于是给将s原本指向Hello的内存地址指向了Hello world这个新的内存地址,而原始String对象中的内容还是Hello,没有变化。而且String这个类是一个不可变的类,一旦声明就不可能改变。所以我们如果要经常修改String的话,应该使用StringBuffer比较好,因为它有一个append方法可以帮助我们拼接字符串在同一个内存地址当中。
是否可以继承 String类?
答:不能,因为String类是final类,所以不可以继承。
String s = new String("xyz");创建了几个 String Object?二者之间有什么区别?
答:如果内存中存在xyz这个对象,那么这句话就只会创建一个对象s,然后将s的内存地址指向xyz所在的内存地址。如果内存中没有xyz这个值的话,那么就会有两个对象,一个是xyz对象,一个是s对象,然后s对象的内存地址指向xyz的内存地址。
String和StringBuffer的区别
答:String是java.lang.String下的,是fina类型的,因此不能修改,不能继承。
而StringBuffer提供了字符串的修改。
String中重写了equals方法,而StringBuffer中没有
String中重写了hashcode的方法,而StringBuffer没有
StringBuffer是线程不安全的,而StringBuilder是线程安全的
如何把一段逗号分割的字符串转换成一个数组?
答: String str = "a,b,c,d,e,f,g";
String [] a = str.split(",");
System.out.print(a[0]+a[1]+a[2]+a[3]);
String str = "a,b,c,d,e,f,g";
String [] a = str.split(",");
System.out.print(a[0]+a[1]+a[2]+a[3]);