小知识:
1:文档注释符
/**
*/
(java.doc)专门编译符号内内容
2:类和函数都尽量不要嵌套
课堂重点:
###
用this关键字
this关键字:由于看不到方法体(大部分类可能都不是自己写的),形参名都看不见。
Cust(String name,int ID,int pwd,double money)
{
name = name;
ID = ID;
pwd = pwd;
money = money;
}//毫无意义,形参赋值给形参
修改为:
Cust(String name,int ID,int pwd,double money)
{
this.name = name;
this.ID = ID;
this.pwd = pwd;
this.money = money;
}
***
this:当前类的一个当前对象(看被谁所调用)
this的使用也是一种代码规范.
***
###
运算符,操作数,new与内存分配
new : 内存分配运算符号—用于开辟内存,后跟操作数。
返回值为开辟内存的首地址
作用1:分配内存,2:作为函数执行代码。
运算符:比如 . 运算符,用来寻找地址
操作数:a+b, ?:三元运算符
内存分配图:
###
重点: static
1:修饰成员变量或成员方法时会当类代码载入Java虚拟机时就会立刻分配内存,且只分配一次(类的所有对象共用一段内存)。
*Java 是动态加载(类加载)
2:static成员可以用对象名调用,也可以用类名调用,但(*一个静态变量尽量用类名去调用,而不是用对象名去调用)
3:静态函数中不能直接调用本类非静态的成员,但可以间接调用,但非静态可以调用静态的。
*如何间接
class name
{
static void jianjie()
{
A a = new A();
a.i = 9;
}
}
这是因为非静态函数一定有内存分配,而静态则未必
*银行程序创新:1:静态函数printMenu(用静态则可以只用一段内存)
2:printNum(打印账户数量)
###
private 与 static
class A
{
private A(){}
} //若类内有改行代码,则类外部不能随意创建对象,但在类内自己可以访问
import java.util.*;
public class Main
{
public static void main(String[] args)
{
A.a.print();
}
}
class A{
A a = new A();
private A()
{
}
void print()
{
System.out.println("hello world");
}
}
报错:不能从静态上下文引用非静态变量a
修改为: +static
import java.util.*;
public class Main
{
public static void main(String[] args)
{
A.a.print();
}
}
class A{
static A a = new A();
private A()
{
}
void print()
{
System.out.println("hello world");
}
}
输出 : hello world 成功
补充知识点:
类的定义
public: 所有对象均可以访问
private: 只有本类内部可以访问
protected:同一个包或者子类中可以访问
不添加修饰符:在同一个包中可以访问
静态(带static修饰符)成员变量/函数与普通成员变量/函数的区别:
所有static成员变量/函数在类中只有一份,被所有类的对象共享;
所有普通成员变量/函数在类的每个对象中都有独立的一份;
静态函数中只能调用静态函数/变量;普通函数中既可以调用普通函数/变量,也可以调用静态函数/变量。