在Java编程中,主要的变量就是属性(成员变量)和局部变量。
我们说的局部变量一般是指在成员方法中定义的变量
Java中作用域的分类
全局变量:也就是属性,作用域为整个类体
局部变量:也就是除了属性之外的其他变量,作用域为定义他的代码块中!
全局变量可以不赋值,直接使用,因为有默认值,局部变量必须赋值后,才能使用,因为没有默认值。
注意事项和使用细节:
属性和局部变量可以重名,访问时遵循就近原则。
在同一个作用域中,比如在同一个成员方法中,两个局部变量,不能重名。
作用域不同:
全局变量:可以被本类使用,或其他类使用(通过对象调用)。
局部变量:只能在本类中对应的方法中使用。
修饰符不同:
全局变量/属性可以加修饰符。
局部变量不可以加修饰符。
构造器需求:
在创建一个人类对象时,是先把一个对象创建好之后,再给他的年龄和姓名属性赋值,使用构造器就是在创建人类对象时,就直接指定这个对象的年龄和姓名。
他是类的一种特殊方法,主要作用是完成对新对象的初始化,
基本语法:
[修饰符] 方法名(形参列表){
方法体;
}
说明:构造器的修饰符可以默认,也可以是public,protected,private。
构造器没有返回值。
方法名必须和类名一样。
形参列表和方法一样的规则。
构造器的调用,由系统完成。
public class Main {
public static void main(String[] args) {
Person p1 = new Person("LiHua", 18);
System.out.println("姓名:" + p1.name);
System.out.println("年龄:" + p1.age);
}
}
class Person {
//这里的name和age就是全局变量
String name;
int age;
//构造器没有返回值,所以也不能写void
//构造器的名称和类名一样
public Person(String pname, int page) {
name = pname;
age = page;
}
}
构造器的注意事项和使用细节
一个类可以定义多个不同的构造器,即构造器重载。
//下面的两个构造器就构成了构造器重载
public Person(String pname, int page) {
name = pname;
age = page;
}
public Person(String pname) {
name = pname;
}
构造器是完成对象的初始化,并不是创建对象。
如果程序员没有定义构造器,系统会自动给类生成一个默认无参构造器(也叫默认构造器)
public class Main {
public static void main(String[] args) {
Dog d1 = new Dog();
}
}
class Dog {
/*
* 默认构造器 Dog() {
*
* }
*/
}
一旦定义了自己的构造器,默认的构造器就覆盖了,就不能使用默认的无参构造器。
对象创建的流程分析
public class Main {
public static void main(String[] args) {
Dog d = new Dog("小狗", 18);
d.out();
}
}
class Dog {
String name;
int age;
//如果构造器的形参,能够直接写成属性名就好了。但会出现一个问题,根据变量的作用域原则:
//构造器的name,age是局部变量,而不是属性。
/*public Dog(String dname, int dage) {
name = dname;
age = dage;
}*/
//this关键字就很好的解决了上述问题
public Dog(String name,int age){
this.name = name; //this.name 就是当前对象的属性name
this.age = age; //this.age 就是当前对象的属性age
}
public void out() {
System.out.println(name + "\t" + age);
}
}
总结:简单的说,那个对象调用,this就代表那个对象。
this注意事项和使用细节:
1.this关键字可以用来访问本类的属性,方法,构造器。
2.this关键字用于区分当前类的属性和局部变量。
3.访问成员方法的语法:this.方法名(参数列表)。
public class Main {
public static void main(String[] args) {
Cat in = new Cat();
in.test2();
}
}
class Cat {
String name;
int age;
public void test1() {
System.out.println("一狗");
}
public void test2() {
System.out.println("二狗");
this.test1();
}
}
4.访问构造器语法:this(参数列表);注意只能在构造器中使用(即只能在构造器中访问另一个构造器,必须放在第一条)
public class Main {
public static void main(String[] args) {
Cat in = new Cat();
in.test2();
}
}
class Cat {
public void test1(String name, int age) {
System.out.println("一狗");
}
public void test2() {
this.test1("小狗", 18); //这个语句必须放在第一条
System.out.println("二狗");
}
}
5.this不能在类定义的外部使用,只能在类定义的方法中使用。
public class Main {
public static void main(String[] args) {
B b = new B();
b.test1();
}
}
class B {
String name = "小狗";
int age = 18;
public void test1() {
System.out.println("name=" + this.name + "\n" + "age=" + this.age);
}
}
OK,本篇文章就到此结束了,非常感谢你能看到这里,所以如果你觉得这篇文章对你有帮助的话,请点一个大大的赞,支持一下博主,若你觉得有什么问题或疑问,欢迎私信博主或在评论区指出~