概述
是新朋友吗?记得先点蓝字关注我哦~
1、 说一下Java和JavaSciprt的区别?
答:-基于对象和面向对象:Java是一种真正的面向对象的语言,即使是开发简单的程序,必须设计对象;JavaScript是种脚本语言,它可以用来制作与网络无关的,与用户交互作用的复杂软件。它是一种基于对象(Object-Based)和事件驱动(Event-Driven)的编程语言,因而它本身提供了非常丰富的内部对象供设计人员使用。- 解释和编译:Java的源代码在执行之前,必须经过编译。JavaScript是一种解释性编程语言,其源代码不需经过编译,由浏览器解释执行。(目前的浏览器几乎都使用了JIT(即时编译)技术来提升JavaScript的运行效率)
- 强类型变量和类型弱变量:Java采用强类型变量检查,即所有变量在编译之前必须作声明;JavaScript中变量是弱类型的,甚至在使用变量前可以不作声明,JavaScript的解释器在运行时检查推断其数据类型。
扩展:Java和JavaScript最重要的区别是一个是静态语言,一个是动态语言。目前的编程语言的发展趋势是函数式语言和动态语言。在Java中类(class)是一等公民,而JavaScript中函数(function)是一等公民,因此JavaScript支持函数式编程,可以使用Lambda函数和闭包(closure),当然Java 8也开始支持函数式编程,提供了对Lambda表达式以及函数式接口的支持。
2、Java有什么特性?面向对象的特征有哪些?Java的重要特征?
答;抽象、封装、继承、多态为Java面向对象的最重要的四个特征(其它特征还有诸如多线程、API多、安全性高、跨平台等等)
1)抽象:Java是面向对象的解释性编程语言,面向对象讲究的万物皆对象,是将一类对象的共同特征总结出来构造类的过程,包括数据抽象(属性)和行为抽象(方法/函数),而不会关注行为的细节是什么样子。
2)封装:将对象中的数据封闭包装起来,只能通过方法/函数操作数据,使用者只能使用对象的属性和方法/函数,而不知道对象的具体实现。
打个比喻就相当于一台自动贩卖机,这个贩卖机相当于对象,贩卖机中有各种饮料,贩卖机有贩售饮料的方法,你只需要投币,就能拿到等值的饮料,但是你不知道你投币以后你的饮料是怎样从贩卖机中出来的。(说到封装就不得不说Java中的访问限制private、default、protect、public),一个简单常见的例子就是set、get方法访问类中私有属性)。
3)继承:继承性:继承是有联系的类所构成的层次模型。它可以重用类,并且提供了明确表达共性的方式,即原始类的派生类(子类)可以从基类(父类)那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。这样使设计新类的过程大大简化。Object是所有类的超类。
4)多态:多态性:多态是在父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为。多态性包括参数多态性和包含多态性。Java编辑器会自动根据所传递的参数进行判断,根据运行时对象的类型不同而执行不同的操作,这样很好地解决了应用程序函数同名问题。多态性丰富了对象的内容,扩大了对象的适应性,改变了对象单一继承的关系。(多态就应该对重载和重写的概念很清楚,重载与重新是实现多态的重要机制)
3、 Java是如何实现“一次编译,随处运行的”?Java能跨平台的原因?
答:Java实现跨平台的原理是通过Java虚拟机来实现的,Java源文件为后缀.java的文件,经过编译器编译为后缀.class文件。这些.class文件可以在JVM(Java虚拟机)中运行,而JVM底层屏蔽了不同操作系统的差异,这样就使得能够“一次编译,随处运行”。
4、 public,private,protected修饰符的作用域,以及不写修饰符时的区别?
答:1)使用public修饰符的变量和方法,在任何一个类中创建对象后都可以访问到,包括当前类、同包的类、子孙类以及外包的类。
2)使用protected修饰符的变量和方法,不可以访问外包类创建的对象。
3)不写修饰符的变量和方法,为默认类,只可以访问同一个包中类创建的对象。
4)使用private修饰符的变量和方法,只能在当前类中使用。
访问修饰符 | 同一类中 | 同一包中 | 子类中 | 全局 |
public | 可以 | 可以 | 可以 | 可以 |
protect | 可以 | 可以 | 可以 | 不可以 |
不写默认下 | 可以 | 可以 | 不可以 | 不可以 |
private | 可以 | 不可以 | 不可以 | 不可以 |
5、 重载和重写的区别?为什么不能根据返回类型来区分重载?
答:重载和重写是Java中实现多态的重要机制。重载(Overload):又称静态多态,编译时多态: 重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;
重载程序示例如下:
public class Overloading {
public int test(){
System.out.println("test1");
return 1;
}
public void test(int a){
System.out.println("test2");
}
//以下两个参数类型顺序不同
public String test(int a, String s){
System.out.println("test3");
return "returntest3";
}
public String test(String s,int a){
System.out.println("test4");
return "returntest4";
}
public static void main(String[] args){
Overloading o = new Overloading();
System.out.println(o.test()); o.test(1);
System.out.println(o.test(1,"test3"));
System.out.println(o.test("test4",1));
}
}
重写(Override): 又称动态多态,运行时多态:发生在两个类中;方法名、参数、返回类型都与父类一致,不可以修改,但是里面的实现可以与被重写方法不同。(可以使用@Overwrite标签校验),重写示例程序如下:
class Animal{ public void move(){ System.out.println("动物可以移动"); }}class Dog extends Animal{ @Override public void move(){ System.out.println("狗可以跑和走"); } public void bark(){ System.out.println("狗可以吠叫"); }}
6、 Java中的数据类型有哪些?
Java中的数据类型分为基本数据类型和引用数据类型两大类;
基本数据类型4类(整形、浮点型、布尔型、字符型)8种{byte(1个字节)、short(2个字节)、int(4个字节)、long(8个字节)、float(4个字节)、double(8个字节)、boolean(一个字节)};引用数据类型(类、接口、数组、枚举类型);1字节=16位,可推算出表示范围,有符号(即从负数表示到正数,boolean、char类型除外)例如byte可表示范围为:负2的8次方到正2的8次方-1,减去1是因为还有0要表示。boolean 类型只有true或false,char类型是2个字节16位Unicode字符,从0到2的16次方-1;数据类型字节数确定也是保证Java程序的可移植,跨平台的基础。
引用数据类型;类、数组、接口、枚举类型;
整理如下图:
7、 char 型变量中能不能存贮一个中文汉字,为什么?
char类型可以存储一个中文汉字,Java中默认使用的编码是Unicode(也叫万国码,能耐表示英文、中文以及其它国家文件和一些特殊符号等等),Unicode编码是能表示汉字的,一个char类型占2个字节(16比特),放一个中文没问题的。
扩展:使用Unicode意味着字符在JVM内部和外部有不同的表现形式,在JVM内部都是Unicode,当这个字符被从JVM内部转移到外部时(例如存入文件系统中),需要进行编码转换。所以Java中有字节流和字符流,以及在字符流和字节流之间进行转换的转换流,如InputStreamReader和OutputStreamReader,这两个类是字节流和字符流之间的适配器类,承担了编码转换的任务;
8、定义变量 float f = 5.2;是否有问题?能否通过编译?
有问题,不能通过编译;在Java中没小数点的默认是int,有小数点的默认是double。将double转换为float需要进行强制类型转换,如 float f = (float)5.2;或者float f = 5.2f; 表示这是一个float类型的数据。
扩展:隐式转换,即自动转换,它不要求加以声明,是系统默认的。它是由小至大的转换:
byte——>short——>int——>long——>float——>double
char——>int——>long——>float——>double
显式转换,即强制转换,它是由大至小的转换,它的格式为:
类型 变量=(类型) 变量2;
9、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
Java规范有这样的规则:1.高位转低位需要强制转换 2.低位转高位自动转.在Java中没小数点默认的为int类型,1是int 型,s1是 short型,通过加1运算后s1 自动转为int 型,所以要强制转换,改为 s1 = (short)s1 + 1;
short s1 = 1; s1 += 1;正确
这个不会发生类型的提升,JAVA规范上说 :
e1+=e2 实际上是 e1=(T1)(e1+e2) ,其中T1是e1的数据类型。
s1+=1等效于 s1=(short)(s1+1),所以是正确的。
10、Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?
Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加0.5然后进行向下取整。(这其实就是简单的数学概念,明白四舍五入就错不了)
是新朋友吗?记得先点蓝字关注我哦~
后台回复【福利】可查看小编为大家准备的资源。
后台回复【福利|面试题】即可获取面试题PDF文件。
后台回复【福利|电子书】即可获取Java电子书。
论文答辩PPT可查看历史文章,留言召集好友点赞以后可以获得!
如有疑问,欢迎留言
您的建议是我们成长的动力
最后
以上就是激情铅笔为你收集整理的java double转int_Java面试题大全(一)的全部内容,希望文章能够帮你解决java double转int_Java面试题大全(一)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复