zoukankan      html  css  js  c++  java
  • [JAVA]java基础知识

    1. JAVA和C#不支持多重继承,但C++可以。JAVA和C#支持继承多个接口。
    2. Obsolete属性可以用来废弃某个方法。
    3. 子类的构造方法必须调用父类的构造方法,如果不显式调用,则默认调用父类的默认构造方法。因为,子类包含父类,子类在实例化的时候,必须先实例化自己的父类。如现有父亲,才能有儿子。
    4.  值类型存放在栈空间中,引用类型只在栈中存放引用的地址,数据存放在堆中。静态数据存放在专门的数据段中。
        int i;    // 在栈中分配空间
        Cat cat;  // 在栈中分配空间,但内容为Null
        cat = new Cat();  // 在堆中创建对象,并保存地址到栈中
    5.  this表示一个指向自身的引用。
    6.  局部变量和成员变量。方法内部声明的变量成为局部变量。类的变量成为成员变量。成员变量存放在堆中,局部变量存放在栈中。
        成员变量如果没有初值,则有默认值0;局部变量则必须赋初始值。

       声明对象时,内存不分配空间,只存在一个空对象;当用new 分配内存空间时,类中的成员变量就会被分配到相应的空间中,并通过构造方法(如果有)初始化,函数的入口地址也会被载入内存.但此时局部变量不会被分配内存空间,只有当对象调用类中的函数时,函数中的局部变量才被分配空间,但函数执行完后,局部变量释放内存,所以如果在函数中没有对局部变量进行初始化,就没有默认值,因此在使用局部变量之前,要事先为其赋值.   
       创建多个对象之间没有相互状态影响,个用个自的内存空间.


    7.  重载[OverLoad]:相同的返回值类型,不同的形参个数或者类型。
        不允许相同的方法名,返回值类型不同。因为如果
        int getMax();
        void getMax();  
        如果调用的时候不需要返回值,直接getMax(),就会出错,不知道是哪一个。
    8.  C、C++中的数组可以分配在栈上,但JAVA中数组属于引用类型。数组也可以堪称是对象。数组中的每个元素相当于对象的成员变量。
        若元素为引用类型,则每一个元素都必须实例化。
    9.  class Takecare
    {
    static int x;
    int y;
    }

    class A
    {
    Takecare A1=now Takecare();
    Takecare A2=now Takecare();


    //在此代码中如果给x赋值那么,A1.x 和A2.x指的是同一个内存空间,无论那个对象修改都是对一个x进行操作
    }


    当java程序执行时,类的字节码文件被加载到内存,如果该类没有创建对象,类的实例成员变量不会被分配内存.但是类中的类变量被加载到内存时,会被分配相应的内存空间.简单的说就是,没创建对象当类加载到内存时候,只有类变量(static)会被分配内存空间,只有创建对象时候实例变量才会被分配空间的.

    像上面的例子里,在没有创建Takecare的对象时候,Takecare::x是有空间的即此时可以访问的,当且仅当Takecare A1=now Takecare()时A1.y才会有内存空间.

    10.  再一个例题:
    public class OuterClass {
      private double d1 = 1.0;
        //insert code here
    }
    You need to insert an inner class declaration at line 3. Which two inner class declarations are

    valid?(Choose two.)
    A. class InnerOne{
         public static double methoda() {return d1;}
       }
    B. public class InnerOne{
         static double methoda() {return d1;}
       }
    C. private class InnerOne{
         double methoda() {return d1;}
       }
    D. static class InnerOne{
         protected double methoda() {return d1;}
       }
    E. abstract class InnerOne{
         public abstract double methoda();
       }
    说明如下:
    一.静态内部类可以有静态成员,而非静态内部类则不能有静态成员。 故 A、B 错
    二.静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量;return d1 出错。

    故 D 错
    三.非静态内部类的非静态成员可以访问外部类的非静态变量。 故 C 正确
    四.答案为C、E

    11.  9、介绍JAVA中的Collection FrameWork(包括如何写自己的数据结构)?
    答:Collection FrameWork如下:
    Collection
    ├List
    │├LinkedList
    │├ArrayList
    │└Vector
    │ └Stack
    └Set
    Map
    ├Hashtable
    ├HashMap
    └WeakHashMap
    Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)
    Map提供key到value的映射

  • 相关阅读:
    40+精彩的HTML5实例和教程
    10+不错的设计资源和灵感的网站
    js利用点击事件做一个简单的计算器
    如何在canvas中画出一个太极图
    利用canvas画一个实时时钟
    利用随机数与定时器做一个简单的伪随机抓阄游戏
    IE8模对话框无法返回至主页面的解决方法
    C# String.Format字符串中包含"{" "}"时需注意的问题
    [Struts2应用开发] 统一的登录验证
    Visual Studio 2008 Express中文版 ‘加载此属性页是出错’ 解决方法
  • 原文地址:https://www.cnblogs.com/tukzer/p/1407609.html
Copyright © 2011-2022 走看看