zoukankan      html  css  js  c++  java
  • java错题本

    1.判断题:

    Java程序一般应当含有main方法,因为它是所有JaVa程序执行的入口(错)

    解析:applet(java小程序)不用,application(java应用程序)需要。(见java applet和java application的区别

    2.判断题:

    当运行Java程序时,类加载器将字节码加载到内存中,字节码检验器确认所有的字节码是合法的并且不会破坏Java的安全限制,然后解释器读取这些字节码并将它们翻译成计算机可以理解的语言。在程序执行的时候还有可能需要在内存中存储一些必要的数据。(对)

     

    3.易错现象:

    4.关于java中的堆区、栈区、方法区

    参考:http://ydiandiandian.diandian.com/post/2012-06-18/40027997380

    关于JVM,参考书《深入浅出JVM》,后面补张图,虽然对JVM还是不太了解,暂且先放放。

    先了解具体的概念:

    JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method)

    (1)堆区:

    1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)

    2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身

    (2)栈区:

    1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中

    2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。

    3.栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。

    (3)方法区:

    1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。

    2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。

    5.static代码块在Java虚拟机加载类时执行;每个static代码块只会被执行一次.

    6.关于java的main方法:

    (1)public,static,void,String args[],四个因素缺一不可;main函数名不可换;args可以随意换。

    (2)static是必须的,这样可以在不需要构造类实例的前提下,直接运行应用程序。(见题3)

        public不是必须的,声明为public是为了main方法可以从任意一个Java运行环境中调用。

         可以使用public、默认(即什么都不写)、protected、private进行修饰,编译不会出错,但会提示“在类***中找不到主方法, 请将主方法定义为:public static void main(String[] args)”。

    例题1:

    以下哪些是main方法的正确形式?

    (1)static void main(String[] args){}

    (2)public static void main(String[] args){}

    (3)public static void main(String args[]){}

    (4)public static void main(String door[]){]

    答案:1,2,3,4

    例题2:

    public class TestMain{
       //情况1:
       public static void main(String[] args){//可以通过编译,而且能运行
             System.out.println("test ok!");
       }
           //情况2:
       static public void main(String[] args){//可以通过编译,而且能运行
          System.out.println("test ok!");
       }
           //情况3:
       static void main(String[] args){//可以通过编译,但不能运行,提示:Main method not public
          System.out.println("test ok!");
       }
           //情况4: 
       public static void main(String args){//可以通过编译,但不能运行
          System.out.println("test ok!");
       }
           //情况1:
       public void main(String[] args){//可以过编译,不可运行,因为static修饰符是必须的。
          System.out.println("test ok!");
       }
      //情况5: 
       void main(String[] args){//可以通过编译,不可运行
          System.out.println("test ok!");
       }
      //情况6: 
       public static void main(String[] args){
          System.out.println(args.length);
          //System.out.println(args[2]);//命令行上输入java TestMain,则args[2]不存在,故有异常,不能正常运行
       }

    7.jdbc中,第一步需要Class.forname("某个数据库的类"),把它叫做“加载数据库驱动”?

    要用jdbc,首先要注册驱动的。比如注册一个mysql的驱动:
    DriverManager.registerDriver(new com.mysql.jdbc.Driver());

    那么Class.forName("com.mysql.jdbc.Driver");
    这句话是加载com.mysql.jdbc.Driver.java的,看一下这个类的源码就知道了,在这个类的静态代码块是这样写的:

    1 static
    2 {
    3     try
    4     {
    5         DriverManager.registerDriver(new Driver());
    6     } catch (SQLException e) {
    7         throw new RuntimeException("Can't register driver!");
    8     }
    9 }

     不光是mysql,sql server ,oracle的驱动都是类似的。

  • 相关阅读:
    Eclipse的SVN插件与本地SVN客户端关联不上
    Oracle与MySQL连接配置
    树莓派实践项目
    20135333苏正生——信息安全系统设计基础第十四周学习总结
    《图解tcp/ip》读书笔记(二)
    解决VC几个编译问题的方法——好用
    《深入理解计算机系统》深入实践之——vim深入研究
    20135333苏正生——信息安全系统设计基础第十二周学习总结
    《图解tcp/ip》读书笔记(一)
    《你的灯亮着吗?:发现问题的真正所在》读书笔记2
  • 原文地址:https://www.cnblogs.com/x_wukong/p/3538004.html
Copyright © 2011-2022 走看看