学习日志01-构造函数 构造代码块 this关键字 static
2021/12/27 23:15:19
本文主要是介绍学习日志01-构造函数 构造代码块 this关键字 static,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 一.构造函数
- 二.构造代码块
- 三.this关键字
- 四.static(静态、修饰符)
一.构造函数
构造函数的作用: 初始化对应的对象。
构造函数的格式:
修饰符 函数名(形式参数){ 函数体 }
构造函数要注意的事项:
1. 构造函数是没有返回值类型的。
2. 构造函数的函数名是必须与类名一致。
3. 构造函数不是由我们手动调用的,是我们在创建了对应的对象时,jvm会根据你创建的对象传递的参数调用
对应 的对象。
4. 如果一个类没有显示写上一个构造函数的时候,那么java编译器会为该类添加一个无参 的构造函数。
5. 如果一个类已经显示写上一个构造函数的时候,那么java编译器则不会再为该类添加一个无参 的构造函数。
6. 构造函数是可以以函数重载的形式存在多个。
构造函数与普通 函数的区别:
1. 返回值类型的区别:
1. 构造函数是没有返回值类型 的,
2. 普通函数是有返回值类型的,即使函数没有返回值,返回值类型也要写上void。
2. 函数名的区别:
1. 构造函数的函数名必须要与类名一致,
2. 普通函数的函数名只要符合标识符的命名规则即可。
3. 调用方式的区别:
1. 构造函数是 在创建对象的时候由jvm调用的。
2. 普通函数是由我们使用对象调用的,一个对象可以对象多次普通 的函数,
4. 作用上的区别:
1. 构造函数 的作用用于初始化一个对象。
2. 普通函数是用于描述一类事物的公共行为的。
//婴儿类 class Baby{ int id; //身份证 String name; //名字 //带参构造函数 public Baby(int i , String n){ id = i; name = n; System.out.println("baby的属性初始化完毕!!"); } //无参 的构造函数 public Baby(){ System.out.println("无参的构造函数被调用了.."); } //普通函数 public void cry(){ System.out.println(name+"哇哇哭..."); } } class Demo2 { public static void main(String[] args) { //创建一个baby对象,调用带参构造函数 Baby b1 = new Baby(110,"狗娃"); //婴儿诞生 白户 System.out.println("编号:"+ b1.id +" 姓名:"+ b1.name); b1.cry(); b1.cry(); //黑户,调用无参的构造函数 Baby b2 = new Baby(); b2.id = 112; b2.name = "狗剩"; System.out.println("编号:"+ b2.id +" 姓名:"+ b2.name); } }
二.构造代码块
构造代码块的作用:给对象进行统一的初始化。
构造函数的作用: 给对应的对象进行初始化。
构造代码块的格式:
{ 构造代码块 }
*注意: 构造代码块的大括号必须位于成员 位置上。
*
代码块的类别:
1. 构造代码块。
2. 局部代码块. 大括号位于方法之内。 作用:缩短局部 变量 的生命周期,节省一点点内存。
3. 静态代码块 static
构造 代码块要注意的事项:
- java编译器编译一个java源文件的时候,会把成员变量的声明语句提前至一个类的最前端。
- 成员变量的初始化工作其实都在在构造函数中执行的。
- 一旦经过java编译器编译后,那么构造代码块的代码块就会被移动构造函数中执行,是在构造函数之前执行的,构造函数的中代码是最后执行 的。
- 成员变量的显示初始化与构造代码块 的代码是按照当前代码的顺序执行的。
class Baby{ int id; //身份证 String name; //名字 //构造代码块... { //System.out.println("构造代码块的代码执行了......"); } //带参构造函数 public Baby(int i , String n){ id = i; name = n; } //无参构造方法 public Baby(){ } //普通函数 public void cry(){ System.out.println(name+"哇哇哭..."); } } class Demo4 { public static void main(String[] args) { Baby b1 = new Baby(110,"狗娃"); // 狗娃 狗剩 铁蛋 System.out.println("编号:"+ b1.id + " 名字:"+b1.name); } }
三.this关键字
this关键字代表了所属函数的调用者对象。
this关键字作用:
1. 如果存在同名成员变量与局部变量时,在方法内部默认是访问局部变量的数据,可以通过this关键字指定访问成员变量的数据。
2. 在一个构造函数中可以调用另外一个构造函数初始化对象。
this关键字调用其他的构造函数要注意的事项:
1. this关键字调用其他的构造函数时,this关键字必须要位于构造函数中 的第一个语句。
2. this关键字在构造函数中不能出现相互调用 的情况,因为是一个死循环。
this关键字要注意事项:
1. 存在同名的成员变量与局部变量时,在方法的内部访问的是局部变量(java 采取的是“就近原则”的机制访问的。)
2. 如果在一个方法中访问了一个变量,该变量只存在成员变量的情况下,那么java编译器会在该变量的 前面添加this关键字。
class Person{ int id; //编号 String name; //姓名 int age; //年龄 //构造函数 public Person(int id,String name ,int age){ this.id = id; this.name = name; this.age = age; } //比较年龄的方法 public void compareAge(Person p2){ if(this.age>p2.age){ System.out.println(this.name+"大!"); }else if(this.age<p2.age){ System.out.println(p2.name+"大!"); }else{ System.out.println("同龄"); } } } class Demo8{ public static void main(String[] args) { Person p1 = new Person(110,"狗娃",17); Person p2 = new Person(119,"铁蛋",9); p1.compareAge(12); } }
四.static(静态、修饰符)
static修饰成员变量时:static修饰成员变量时,那么该成员变量的数据就是一个共享的数据.
静态成员变量的访问方式:
方式一: 使用对象进行访问。 对象.属性名
方式二:可以使用类名进行访问。 类名.属性名
注意:
1.非静态成员变量不能类名直接访问,只能使用对象进行访问;
2.千万不要为了方便访问成员变量而使用static修饰,一定要是该数据是共享数据 时才使用static修饰。
class Student{ String name; //非静态成员变量 static String country = "中国"; //静态的成员变量 public Student(String name){ this.name = name; } } class Demo10 { public static void main(String[] args) { Student s1 = new Student("狗娃"); Student s2 = new Student("狗剩"); //System.out.println("国籍:"+ Student.country); System.out.println("名字:"+ s1.name); System.out.println("名字:"+ s2.name); } }
这篇关于学习日志01-构造函数 构造代码块 this关键字 static的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-07fastcgi 是什么-icode9专业技术文章分享
- 2024-10-07fastcgi 的详细使用教程介绍-icode9专业技术文章分享
- 2024-10-07git如何更新单个文件到本地-icode9专业技术文章分享
- 2024-10-07如何使用ASM(Abstract Syntax Tree Manipulation)技术来修改第三方AAR依赖中的函数-icode9专业技术文章分享
- 2024-10-07Activity 跳转时间耗时很长怎么优化解决-icode9专业技术文章分享
- 2024-10-07Androud Toast 有哪些常用的第三方组件-icode9专业技术文章分享
- 2024-10-07在viewmodel中怎么使用 mmkv?-icode9专业技术文章分享
- 2024-10-07MMKV.defaultMMKV() 是单例模式吗?-icode9专业技术文章分享
- 2024-10-04el-table 开启定时器下,表格的选中状态会消失是什么原因-icode9专业技术文章分享
- 2024-10-03如何安装和初始化飞牛私有云 fnOS?-icode9专业技术文章分享