面向对象
空即万物 万物即空 - 也就是说任意类型对象都可以指向null
构造函数也是一个函数,函数就是一个功能的封装 当需要该功能的时候 就直接调用函数即可。由于构造函数的特殊性,不能直接使用构造函数名来调用 这个时候就是用this来辅助
【注意:使用this调用构造函数时 这条语句必须位于第一句】
这些操作对于吃饭的人来说 没有必要了解 所以在饭店中有厨房的地方 把以上操作隐藏
java程序中所说的封装是:将对象的属性私有化,对外提供对应的公共的set和get方法即可
public void setName(String name){
封装的好处: 降属性私有化之后 可以提供对应的赋值和取值的方法,当赋值不符合实际逻辑时,可以在赋值的方法(set方法)中加入自己的逻辑判断,这种操作提高了代码的健壮性,以及数据的安全性
通过方法的调用 将数据传到对应的类中 在该类中对属性进行赋值的 外界并没有直接操作对象的属性,所以可以赋值成功。为了避免赋值的随意性,在有参的构造方法中调用赋值的set方法对属性进行赋值
利用封装特性 对学生类进行封装 并在测试类中创建学生对象 打印学生信息
将属性私有化的关键字:private 公共的关键字public
static是一个静态修饰符,可以修饰成员变量,也可以修饰成员方法
当该类的每个对象的某属性值都一致时,为了节省内存空间,可以使用static修饰该属性。
对象的属性是跟随着对象放在堆中。static修饰的变量放在静态域中,这个变量属于类,被所有对象所共享.
【了解】在静态域中的变量 一旦被赋值 将永久持有该值,一直到被修改或者程序终止
为什么经常使用类名调用静态变量 而不是使用对象引用变量来调用????
创建对象的时候 类已经存在了 静态变量是直接可以由类来调用的,如果再因为调用静态变量而创建一个对象去占用堆的空间 【浪费内存了】
main也是一个类中的静态方法,只不过这是一个特殊的方法,调用者不由我们控制,而是有虚拟机完成的
public static void main(String[] args)
// 通过接收者来看一下 虚拟机调用main函数时 传的参数是什么?
System.out.println(args.length); // 0
//String[] arr = new String[0];
System.out.println(Arrays.toString(args));
设计一个表示用户的User类,类中的变量有用户名、记录用户个数的变量‘ 定义类的构造方法(无参、为用户名赋值),创建几个对象 统计对象的个数
对象一建立(new)就被执行了 而且 执行时机优先于构造函数
如果某些内容只需要加载一次,那么这个内容可以放置在静态代码块中[第二阶段 加载JDBC的驱动类时]