Java基础总结

Java基础总结

‌一个java类中是否可以包含多个类?

答案:可以,但是只能有一个public类,而且类名要和文件名相同

 

&&&的区别

答案:两个都表示与运算,但是&&具有短路功能,如果a&&bafasle,那么程序就不会再判断b的值,而&却会让程序判断两边的值。与运算:ab,如果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语句可以作用在byteintlong上,但是不能作用在String

 

short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

答:整型默认是int类型,所以第一个中,s1short类型,然后s1+1int类型,这时候如果把short转成int,需要强制转换,所以要在前面加一个short。第二个中,+=运算会自己进行类型转换,就不会出现问题。

 

char型变量中能不能存贮一个中文汉字?为什么?.

答,char可以一个中文汉字,一个中文是2个字节,也就是8位,而char8位的,所以可以存储

 

"==" 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有八种基本数据类型,分别是intbytelongfloatdoublebooleanshortchar

Stringjava.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]);


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值