zoukankan      html  css  js  c++  java
  • 经典的Java基础面试题集锦

    问题:如果main方法被声明为private会怎样?

    答案:能正常编译,但运行的时候会提示”main方法不是public

     

    问题:Java里的传引用和传值的区别是什么?

    答案:传引用是指传递的是地址而不是值本身,传值则是传递值的一份拷贝。

     

    问题:如果要重写一个对象的equals方法,还要考虑什么?

    答案:hashCode

     

    问题:Java一次编写,处处运行是如何实现的?

    答案:Java程序会被编译成字节码组成的class文件,这些字节码可以运行在任何平台,因此Java是平台独立的。

     

    问题:说明一下public static void main(String args[])这段声明里每个关键字的作用

    答案:public: main方法是Java程序运行时调用的第一个方法,因此它必须对Java环境可见。所以可见性设置为pulic.

         static: Java平台调用这个方法时不会创建这个类的一个实例,因此这个方法必须声明为static

         void: main方法没有返回值。

         String是命令行传进参数的类型,args是指命令行传进的字符串数组。

     

    问题:==equals的区别

    答案:==比较两个对象在内存里是不是同一个对象,就是说在内存里的存储位置一致。两个String对象存储的值是一样的,但有可能在内存里存储在不同的地方 .

    == 比较的是引用而equals方法比较的是内容。public boolean equals(Object obj) 这个方法是由Object对象提供的,可以由子类进行重写。默认的实现只有当对象和自身进行比较时才会返回true,这个时候和==是等价的。 String, BitSet, Date, File都对equals方法进行了重写,对两个String对象 而言,值相等意味着它们包含同样的字符序列。对于基本类型的包装类来说,值相等意味着对应的基本类型的值一样。

     1 public class EqualsTest {
     2     public static void main(String[] args) {
     3         String s1 = “abc”;
     4         String s2 = s1;
     5         String s5 = “abc”;
     6         String s3 = new String(”abc”);
     7         String s4 = new String(”abc”);
     8         System.out.println(”== comparison : ” + (s1 == s5));
     9         System.out.println(”== comparison : ” + (s1 == s2));
    10         System.out.println(”Using equals method : ” + s1.equals(s2));
    11         System.out.println(”== comparison : ” + s3 == s4);
    12         System.out.println(”Using equals method : ” + s3.equals(s4));
    13     }
    14 }

    结果:

    == comparison : true
    == comparison : true
    Using equals method : true
    false
    Using equals method :true

    问题:如果去掉了main方法的static修饰符会怎样?

    答案:程序能正常编译。运行时会抛NoSuchMethodError异常。

     

    问题:为什么oracle type4驱动被称作瘦驱动?

    案:oracle提供了一个type 4 JDBC驱动,被称为瘦驱动。这个驱动包含了一个oracle自己完全用Java实现的一个TCP/IPNet8的实现,因此它是平台独立的,可以在运 行时由浏览器下载,不依赖任何客户端 的oracle实现。客户端连接字符串用的是TCP/IP的地址端口,而不是数据库名的tnsname

     

    问题:介绍一下finalize方法

    答案: final: 常量声明。 finally: 处理异常。 finalize: 帮助进行垃圾回收。

    口里声明的变量默认是final的。final类无法继承,也就是没有子类。这么做是出于基础类型的安全考虑,比如StringInteger。这样也 使得编译器进行一些优化,更容易保证线程的安全性。final方法无法重写。final变量的值不能改变。finalize()方法在一个对象被销毁和回 收前会被调用。finally,通常用于异常处理,不管有没有异常被抛出都会执行到。比如,关闭连接通常放到finally块中完成。

     

    问题:什么是Java API

    答案:Java API是大量软件组件的集合,它们提供了大量有用的功能,比如GUI组件。

     

    问题:GregorianCalendar类是什么东西?

    答案:GregorianCalendar提供了西方传统日历的支持。

     

    问题:ResourceBundle类是什么?

    答案:ResourceBundle用来存储指定语言环境的资源,应用程序可以根据运行时的语言环境来加载这些资源,从而提供不同语言的展示。

     

    问题:为什么Java里没有全局变量?

    答案:全局变量是全局可见的,Java不支持全局可见的变量,因为:全局变量破坏了引用透明性原则。全局变量导致了命名空间的冲突。

    问题:如何将String类型转化成Number类型?

    答案:Integer类的valueOf方法可以将String转成Number。下面是代码示例:

    String numString = “1000″;int id=Integer.valueOf(numString).intValue();

    问题:SimpleTimeZone类是什么?

    答案:SimpleTimeZone提供公历日期支持。

     

    问题:while循环和do循环有什么不同?

    答案:while结构在循环的开始判断下一个迭代是否应该继续。do/while结构在循环的结尾来判断是否将继续下一轮迭代。do结构至少会执行一次循环体。

    问题:Locale类是什么?

    答案:Locale类用来根据语言环境来动态调整程序的输出。

    问题:面向对象编程的原则是什么?

    答案:主要有三点,多态,继承和封装。

    问题:介绍下继承的原则

    答案:继承使得一个对象可以获取另一个对象的属性。使用继承可以让已经测试完备的功能得以复用,并且可以一次修改,所有继承的地方都同时生效。

    问题:什么是隐式的类型转化?

    答案:隐式的类型转化就是简单的一个类型赋值给另一个类型,没有显式的告诉编译器发生了转化。并不是所有的类型都支持隐式的类型转化。

    代码示例:

    int i = 1000;long j = i; //Implicit casting

    问题:sizeofJava的关键字吗?

    答案:不是。

    问题:native方法是什么?

    答案:native方法是非Java代码实现的方法。

    问题:在System.out.println()里面,System, out, println分别是什么?

    答案:System是系统提供的预定义的final类,out是一个PrintStream对象,printlnout对象里面一个重载的方法。

    问题:封装,继承和多态是什么?

    答案:简单来说,多态是指一个名字多种实现。多态使得一个实体通过一个通用的方式来实现不同的操作。具体的操作是由实际的实现来决定的。

    多态在Java里有三种表现方式:方法重载通过继承实现方法重写通过Java接口进行方法重写。

    问题:显式的类型转化是什么?

    答案:显式的类型转化是明确告诉了编译器来进行对象的转化。

    代码示例:

    long i = 700.20;int j = (int) i; //Explicit casting

    问题:什么是Java虚拟机?

    答案:Java虚拟机是能移植到不同硬件平台上的软件系统。

    问题:类型向下转换是什么?

    答案:向下转换是指由一个通用类型转换成一个具体的类型,在继承结构上向下进行。

    问题:Java的访问修饰符是什么?

    答案:Java访问修饰符包括private,default,protected和public。含义分别表示私有的,默认的,受保护的和公有的访问修饰符。这些访问修饰符既可以修饰类中的属性,又可以修饰类中的方法,而public和default还可以修饰类。在同一个java文件里,公有类有且仅有一个,并且该文件命名为类名.java。

         Java访问修饰符就是确定类中属性或方法的访问权限,换句话说,就是这些属性和方法所起的作用范围。

         private,私有的访问权限,也是最严格的访问权限,仅只能在设置了该权限的类中访问,利用这个访问权限,表现出封装思想。

         default,默认的访问权限,也是可以省略的访问权限,它不仅能在设置了该权限的类中访问,也可以在同一包中的类或子类中访问。

         protected,受保护的访问权限,它除了具有default的访问权限外,还可以在不同包中所继承的子类访问。

         public,公有的访问权限,也是最宽松的访问权限,不仅可以是同一个类或子类,还是同一个包中的类或子类,又还是不同包中的类或子类,都可以访问。

         要想更深入地理解这些访问权限,一方面需要明白各自的作用域,另一方面更是要弄清楚各自所体现出来的编程思想,比方说,prvite表现的封装思想,public表现的面向接口编程的思想等。

         在面向对象设计和编程的过程中,归根结底就是类的设计。而要设计出不仅满足当前需求同时也能符合未来需求的类,就很有必要对类中属性和行为设置合适的访问权限。那些应该为私有的,那些又应该为公有的,还有那些又应该为受保护的等,都应该给予合理的规划和布局,一来保证程序的功能要求,二来要体现程序的扩展性能,三来要呈现程序友好性质。总之,程序应该更好地服务用户。而访问权限在这样宏伟目标里扮演着重要角色。

  • 相关阅读:
    POJ1486 Sorting Slides 二分图or贪心
    POJ2060 Taxi Cab Scheme 最小路径覆盖
    POJ3083 Children of the Candy Corn 解题报告
    以前的文章
    POJ2449 Remmarguts' Date K短路经典题
    这一年的acm路
    POJ3014 Asteroids 最小点覆盖
    POJ2594 Treasure Exploration 最小路径覆盖
    POJ3009 Curling 2.0 解题报告
    POJ2226 Muddy Fields 最小点集覆盖
  • 原文地址:https://www.cnblogs.com/justdoitba/p/7634947.html
Copyright © 2011-2022 走看看