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的驱动都是类似的。

  • 相关阅读:
    +-字符串
    心急的C小加
    明明的随机数
    最大公约数和最小公倍数
    独木舟上的旅行
    背包问题
    喷水装置
    奇数魔方
    栈的应用
    c链表结点的删除和添加
  • 原文地址:https://www.cnblogs.com/x_wukong/p/3538004.html
Copyright © 2011-2022 走看看