Java基础-基本语法

1、Java语言有哪些特点

简单易学、有丰富的类库

面向对象(Java最重要的特性,让程序耦合度更低,内聚性更高)

与平台无关性(JVM是Java跨平台使用的根本)

可靠安全

支持多线程

2、面向对象和面向过程的区别

面向过程:一种较早的编程思想,站着过程的角度思考问题,强调的就是功能行为,功能的执行过程,即先后顺序,而每一个功能我们都使用函数(类似于方法)把这些步骤一步一步实现。使用的时候依次调用函数就可以了。

面向对象:一种基于面向过程的新编程思想,站在对象的角度思考问题,把多个功能合理放到不同对象里,强调的是具备某些功能的对象。

具备某种功能的实体,称为对象。面向对象最小的程序单元是:类。面向对象更加符合常规的思维方式,稳定性好,可重用性强,易于开发大型软件产品,有良好的可维护性。

在软件工程上,面向对象可以使工程更加模块化,实现更低的耦合和更高的内聚。

3、&和&&的区别?

&是位运算符,表示按位与运算,在进行逻辑判断时前面为false后面的内容仍需处理。

&&是布尔逻辑运算符,表示逻辑与(and),具有短路计算功能,前面为false不再处理后面的内容。

4、Math.round(11.5)等于多少? Math.round(-11.5)等于多少?

Math.round(11.5)==12;Math.round(-11.5)==-11。

round方法返回与参数最接近的长整数参数加1/2后求其floor。Math类中提供了三个与取整有关的方法:ceil、floor、round,这些方法的作用与它们的英文名称的含义相对应,例如,ceil的英文意义是天花板,该方法就表示向上取整,Math.ceil(11.3)的结果为12,Math.ceil(-11.3)的结果是-11;floor的英文意义是地板,该方法就表示向下取整,Math.ceil(11.6)的结果为11,Math.ceil(-11.6)的结果是-12;最难掌握的是round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。

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

对于 short s1 =1;s1=s1+1;由于1是int类型,因此s1+1运算结果也是int型,需要强制转换类型才能赋值给short型,编译器将报告需要强制转换类型的错误。

而 short s1 =1;s1 += 1;可以正确编译,因为s1+=1;相当于s1=(short)(s1+1);其中有隐含的强制类型转换。

6、用最有效率的方法算出2乘以8等于几?

2 << 3,因为将一个数左移n位,就相当于乘以了2的n次方,那么,一个数乘以8只要将其左移3位即可,而位运算cpu直接支持的,效率最高,所以,2乘以8等于几的最效率的方法是2 << 3。

7、String是基本的数据类型吗?

不是,String类是final类型,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 。

Java 中的基本数据类型只有 8 个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type),剩下的都是引用类型(reference type),Java 5 以后引入的枚举类型也算是一种比较特殊的引用类型。

8、字符串操作:如何实现字符串的反转及替换?

可用字符串构造一StringBuffer 对象,然后调用StringBuffer 中的reverse方法即可实现字符串的反转,调用replace 方法即可实现字符串的替换。

9、a = a + b 与 a += b 的区别

+= 隐式的将加操作的结果类型强制转换为持有结果的类型。如果两这个整型相加,如 byte、short 或者 int,首先会将它们提升到 int 类型,然后在执行加法操作。

byte a = 127;
byte b = 127;
b = a + b; // error : cannot convert from int to byte**
b += a; // ok

(因为 a+b 操作会将 a、b 提升为 int 类型,所以将 int 类型赋值给 byte 就会编译出错)

10、int 和Integer 有什么区别?

int 是基本数据类型,不是对象,占一个内存空间,没有方法,默认值为0。

Integer 是封装类,是一个对象,需要存储对象的元数据,具有方法及属性,默认值为null。

Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况。

Java 为每个基本数据类型提供了封装类:

基本数据类型: boolean,char,byte,short,int,long,float,double

封装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double。

11、深拷贝和浅拷贝的区别是什么?

浅拷贝:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象。

深拷贝:被复制对象的所有变量都含有与原来的对象相同的值.而那些引用其他对象的变量将指向被复制过的新对象。而不再是原有的那些被引用的对象.换言之.深拷贝把要复制的对象所引用的对象都复制了一遍。

12、float f=3.4是否正确?

不正确。3.4 是双精度数,将双精度型(double)赋值给浮点型(float)属于 下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换 float f =(float)3.4; 或者写成 float f =3.4F;

13、switch语句能否作用在byte上,能否作用在long上,能否作用在String上?

在switch(expr1)中,expr1是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long和String类型都不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。

从 Java 7 开始,我们可以在 switch case 中使用字符串,但这仅仅是一个语法糖。内部实现在 switch 中使用字符串的 hash code。

14、数组有没有length()这个方法? String有没有length()这个方法?

数组没有length()这个方法,有length的属性。String有length()这个方法。

15、面向对象的特征有哪些方面?

1)  抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面:一是抽象的属性,二是抽象的方法。

2)  封装:封装好之后,对于那个事物来说,看不到这个事物比较复杂的那一面,只能看到该事物简单的那一面。复杂性封装,对外提供简单的操作入口。封装的目标就是要实现软件部件的“高内聚、低耦合”,防止程序相互依赖性而带来的变动影响。封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。

封装之后才会形成真正的“对象”,真正的“独立体”。

封装就意味着以后的程序可以重复使用。并且这个事物应该适应性比较强,在任何场合都可以使用。

封装之后,对于事物本身,提高了安全性。【安全级别高】

3)  继承:继承“基本”的作用:代码复用,提高软件的可重用性和可扩展性。但是继承最“重要”的作用是:有了继承才有了以后“方法的覆盖”和“多态机制”。Java语言当中的继承只支持单继承,一个类不能同时继承很多类,只能继承一个类。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。

4)  多态性:多态性是指允许不同类的对象对同一消息作出响应,是类的多种表现方式,比如同名不同参。多态性包括参数化多态性和包含多态性。多态具体表现在重载和重写。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

16、作用域public,private,protected,以及不写时的区别

作用域当前类同一package子孙类其他package
public √ √ √ √ 
protected√ √ √ 
friendly √ √ ××
private   √ ×××

不写时默认为friendly

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值