1、局部变量不能写限制修饰符。局部变量与成员变量同名,那么成员变量被隐藏。
2、栈内存存地址,堆内存存首地址。引用存储的是对象内存空间的首地址。
3、万物皆对象;类是对大量对象共性的抽象
关系:类是创建对象的模板,对象是类的具体化。
4、public final double PI=3.1415926;//PI值不能改变,常量
package LESSON7; public class demo3 { //final表示最终的 //final修饰的类不能被继承 /*final*/ class D{ public /*final */int i=1;//final修饰的变量不能被改变 public /*final*/ void test(){//final修饰的方法不能被重写 i++; } } class E extends D{ public void test(){ } } public static void main(String[] args) { } }
5、局部变量与成员变量同名,那么成员变量被隐藏。
6、任意类型类型都可作为函数参数进行传递(基本和引用),如对象
package LESSON5; //饲养员 public class Breeder { public Breeder(String name){ this.name=name; } public String name; public void feed(Animal animal,Food food){//对象作为函数参数 System.out.println(name+"给"+animal.name+"吃"+food.name); } } package LESSON5; //动物 public class Animal { public Animal(String name){ this.name=name; } public String name; } package LESSON5; //食物 public class Food { public Food(String name){ this.name=name; } public String name; } package LESSON5; public class exercise2 { public static void main(String[] args) { Breeder b=new Breeder("张三"); Food f=new Food("鱼食"); Animal a=new Animal("大鱼"); b.feed(a, f); } }
7、this是一种特殊的引用,指向当前对象
this的三种使用方法:
如果发生局部变量可以成员变量命名冲突时,可以通过this.成员变量名的方式区分成员变量和局部变量
在构造器中,可以通过this关键字将局部变量传递参数的值赋值给全局变量
一个构造方法中需要调用同一个类的另一个构造方法,可以通过this()的方式调用,但this()必须要书写在第一行
构造器:
构造器的名称必须与类名相同。
构造器没有返回类型,包括关键字void也不能有。
任何类都含有构造器,如果没有显式地定义类的构造器,则系统会为该类提供一个默认的构造器。这个默认的构造器不含任何参数。一旦在类中显式地定义了构造器,系统就不会再为这个类提供默认的构造器了。
package LESSON5; public class Student { public String name; public int age; public char sex; //构造器:创建对象 public Student(String name)//声明一个参数的构造器,通过参数传进来给属性赋值 { //this:表示当前对象 this.name=name;//把值赋给全局变量public String name;this.name全局变量 } //声明两个参数的构造器 public Student(String name,int age){ this(name);//(调用指定构造器)使用this调用另外一个重载的构造器,只能在构造器中使用。只能写到第一行 this.age=age; } //定义三个参数的构造器 public Student(String name,int age,char sex){ this(name,age);//使用this调用另外一个重载的构造器,只能在构造器中使用 this.sex=sex; } //方法 public void test(){ System.out.println("姓名:"+name+" 年龄:"+age+" 性别:"+sex); this.eat();//调用指定的方法,不一定写在第一行(和构造器中的不同) } public String drink(String he){//形参 return;表示结束 return只有返回数据的功能,没有打印功能 return name+"在"+he; } public void eat(){ System.out.println("吃"); } //方法重载:在同一个类中,方法名相同,参数列表不同的现。参数列表:参数类型 参数个数,参数顺序。 public int sum(int x,int y){ return x+y; } public double sum(double x,double y){ return x+y; } public double sum(double x,double y,double z){ return x+y+z; } public float sum(float x,float y){ return x-y; } }
package LESSON5; public class test { public static void main(String[] args) { //创建对象的过程其实是调用了构造器,并且赋值,根据参数的个数来进行构造器选择 Student stu=new Student("张三",18,'男'); stu.test(); System.out.println(stu.drink("喝可乐"));//实参 System.out.println(stu.sum(3, 2)); System.out.println(stu.sum(3.0, 2.0)); System.out.println(stu.sum(3.0, 2.0,1.0)); System.out.println(stu.sum(3f, 2f)); } }