[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的映射

原文地址:https://www.cnblogs.com/tukzer/p/1407609.html