以前学习java的时候记录下来的笔记。传上来和大家一起分享
JAVA的主要特征:
解释性(Java的源程序被编译成字节码,在Java虚拟机上运行。Writeonce, run anywhere)与体系无关(由于Java是解释性的,可以在任何操作系统上运行。)
可移植性(Java程序无需重新编译就可以在不同的平台上运行。在java语言中没有针对平台的特征,例如整数在不同平台上是长度相同的。)
next() 读入一个字符串(空白符结束)
nextLine() 读入一行字符(回车键结束)
标识符可以为任意长度。
class C
{
inta = 1;
publicstaticvoidmain(String[] args)
{
}
voida()
{
System.out.println("A");
}
}}
变量名可以和函数名同名。
char表示16位的单个Unicode字符。
如果被调用的方法是当前类中的静态方法,可以直接调用。如果是其它类中的静态方法需要通过类名调用
A aa =new A() ,//(A*)malloc(sizeof(A))
New A()在堆里d=动态分配了内存,被当做了A对象。
Aa本身的内存在栈中分配的
堆中的内存地址赋给了aa
Aa指向堆的内存,aa代表了堆的内存
Aa.i代表aa这个静态指针变量所指向的动态内存中的A对象
构造函数没有返回值
所有对象共用一个类方法,只为属性分配内存,如果是static变量,则也是和方法一样分配一次
每一个非static方法中都隐含着this指针
静态函数内部,没有this指针。因为属于类本身的,不用再分配内存。
Static的属性(例如i)属于类本身。
只有非private的static成员才可以通过类名的方式访问
非静态方法可以访问静态方法,有对象就肯定有静态的方法。(成员)。
静态方法不能访问非静态成员
Static不能修饰构造方法。
私有不能被继承。(私有成员无法被子类继承)
私有成员物理上已经被继承过来,不过逻辑上不能访问它。
普通方法中不能调用父类的构造方法,必须借助super.
Super语句必须是第一条语句。
如果不写super(),编译器会自动帮你添加
(每个子类构造方法的第一条语句,都是隐含地调用super())
如果父类有f(),那么Super.f()调用父类的f();
重写方法时(在子类中重新定义父类中已有的方法),不能使用比父类中被覆盖的方法更严格的访问权限。
(重写方法的权限不能低于被重写方法的访问权限)
在子类重写了一个方法f()后,这个对象的f()实际上是含有了两个。
子类可以赋给父类,父类不能赋给子类。把一个父类强行转化为子类对象,编译不报错,但运行错误。因为强行转换这一动作是对的。
通过父类引用只能能访问子类对象从父类继承过来的成员。
表达式之间只能用分号,逗号只能在定义时以及参数列表中使用。
*异常不是编译错误。
Try
{
}
Catch(ArithmeticException e)//e用于接收抛出的异常对象 这个可以直接写父类Exception
{
}
PrintStackTrace()可以简单的认为是输出该异常的具体错误,如果无异常则无现象。
Scanner sth=new scanner(System.in )System.in 是键盘标准输入流。
空指针异常:
Class A{
Public int age;
}
….
A p =null;
p.A;