java学习 java -- 构造方法 静态变量和方法
来源:互联网 发布:mysql导入大文件 编辑:程序博客网 时间:2024/06/08 05:37
一、构造方法
构造函数的作用:对对象的属性(成员变量)进行初始化。
写法:
1.构造方法的方法名与类名完全相同(大小写必须一样)
2.没有返回值类型(连void也不写)
3.没有返回值(没有return)
4.一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则系统会自动插入一个无参数的默认构造方法,这个构造方法不执行任何代码。
5.构造方法可以重载。参数顺序 个数 类型的不同
public static void main(String[] args) { // 构造方法 是系统帮你调用的 在初始化对象时 Person p = new Person(); //p.Person(); 无法 自己来调用构造方法(不能使用对象点方法) p.sayHi(); Person p1 = new Person(); p1.sayHi(); // 测试有参的构造方法 // 初始化对后面那对小括号 填参数调用的就是有参构造方法 // 没有填参数反之 调用无参构造方法 Person p2 = new Person("wangwu",100); p2.sayHi(); // TODO Auto-generated method stub}}class Person{String name = "lisi";int age = 18;// 构造方法(无参数的构造方法)public Person() { name = "zhangsan"; age = 18; System.out.println("我是一个构造方法");}//写一个有参数的构造方法public Person(String name, int age) { // 给对象的成员变量赋值 this.name = name; this.age = age;}public void sayHi() { System.out.println(name + "---" + age);}}
输出结果
构造方法运行的顺序
例
public class Demo01 {public static void main(String[] args) { Person person = new Person();}}class Person{String name;int age;public Person() { System.out.println("我是一个无参的构造方法");}public Person(String name, int age) {}}
输出结果
也就是说 我们 在构造方法中 只要你在实例一个对象的时候 new创建对象的时候相当于输出这个构造方法,然后在执行main方法里的其他语句,比如说上一个例子中 在new之后的sayhi();方法是new之后的 的语句 所以 先输出一个构造方法,然后输出sayhi()中的语句。
- 构造方法的注意事项
- 1.如果你没写任何构造方法
- 那么系统会给你提供一个 无参的构造方法
- 2.如果你写了有参的构造方法
- 这时系统就不再为你提供 无参的构造方法
- 3.如果你想写有参构造方法 建议你把无参的构造方法也写上
例:
public class Demo02 {public static void main(String[] args) { Car c1 = new Car("五菱宏光", 4); // 这样修改对象的属性 属于 谋杀 // 坏处:浪费内存空间 c1 = new Car("长城汽车",5); // 直接对象点属性修改 相对上面的方法 更灵活 省空间 c1.name = "北京吉普"; c1.num = 100; c1.sayHi();}}class Car{String name;int num;public Car() {}// 写个有参构造方法public Car(String name, int num) { this.name = name; this.num = num;}public void sayHi() { System.out.println(name + "---" + num);}
}
二、静态变量
静态变量
静态变量调用
1.可以使用对象去调用(但是不推荐)
2.静态变量用类名调用
(静态变量不依托对象 因为静态变量被加载的时候 对象还没有创建)
静态变量的特点:
1.随着类的加载而加载
2.创建优先于对象存在
3.是类穿件出来的对象 共享的部分
4.可以使用类名去调用
静态变量的好处:
节省内存空间
静态变量的应用场景:
举例:饮水机 和 水杯
静态变量与成员变量的区别
1.所属不同
成员变量:属于对象的 又叫对象变量(实例变量)
静态变量:属于类的 又叫类变量
2.内存中的存储不同
成员变量:存储在堆内存
静态变量:存储在方法区的静态区
3.加载到内存中的时机不同(生命周期不同)
成员变量:随着对象的创建而创建 随着对象的灭亡而灭亡
静态变量:随着类的加载而存在
4.调用方法不同
成员变量:只能使用对象去调用
静态变量:可以用对象区调用 但是一般用类名去调用
内存中表现步骤
1.类加载到方法区
2.加载到方法区的同时 静态变量被加载到方法区的 静态区
3.main函数入栈
4.在堆内存中创建 对象
5.把地址赋值给main函数的 对象保存
6.main函数 出栈
7.程序结束
静态变量在内存中的表现
public static void main(String[] args) { AVgirl g1 = new AVgirl(); g1.name = "苍老师"; AVgirl.country = "日本"; g1.sayHi(); AVgirl g2 = new AVgirl(); g2.name = "小泽老师"; AVgirl.country = "日本"; g2.sayHi();}}class AVgirl{String name; // 姓名static String country; // 国籍public void sayHi() { System.out.println(name + "---" + country);}
}
三、静态方法
public static void main(String[] args) { Man m1 = new Man(); m1.sayHi(); //静态方法的调用 使用类名点方法调用 Man.sayHi2();}}class Man{int nim1; // 成员变量static int num2; // 静态变量// 在成员方法中 可以使用 成员变量 和 静态变量public void sayHi() { System.out.println(this.nim1); System.out.println(Man.num2);}// 声明一个 静态成员方法// 静态成员方法中 不能使用 成员变量// 只能使用静态变量// 简单记:静态的方法只能使用静态的变量 和 静态方法public static void sayHi2() { //System.out.println(this.num1); System.out.println(num2);}
}
设计一个数组工具类,可以实现的功能1.数组的反转、2.数组的遍历、3.数组的最大值输出。
private ArrayTools() {}/** * 获取数组的最大值 * @param array 数组 * @return 返回数组的最大值 */public static int getArrayMax(int[] array) { // 在数组中随便找一个数当最大值 int max = array[0]; for (int i = 0; i < array.length; i++) { if (array[i] > max) { max = array[i]; } } return max;}/** * 遍历数组 * @param array 数组 */public static void printArry(int[] array) { for (int i = 0; i < array.length; i++) { System.out.println(array[i]); }}/** * 数组元素反转 * @param array 数组 */public static void changeArray(int[] array) { for (int i = 0; i < array.length / 2; i++) { int temp = 0; temp = array[i]; array[i] = array[array.length - 1 - i]; array[array.length - 1 - i] = temp; } System.out.println(Arrays.toString(array));}
}
在这些类中有一个共同点 就是没有成员变量,只有方法
如果仅仅需要使用类中成员方法, 这时可以 把成员方法写成静态方法, 在调用的时候 直接使用类名去调用 方便 , 一般 工具类 都会使用静态方法
查看系统类 Math发现, 系统把 构造方法私有化, 私有化后 外界无法创建 Math这个类的对象
什么时候可以构造方法私有化 , 当一个类 所有的 属性 和 方法 都是静态的, 可以私有化构造方法 因为根本不需要对象
- java学习 java -- 构造方法 静态变量和方法
- JAVA 构造方法 静态变量 静态方法
- Java学习:静态方法,静态变量和静态代码块
- JAVA基础:构造方法、静态变量
- java构造方法 静态变量小知识
- Java的构造方法,静态变量与静态方法
- java 静态方法和静态变量 static
- java 静态方法和静态变量 static
- java的静态方法和静态变量
- java 静态方法和静态变量 static
- java中的静态变量和静态方法
- Java的静态变量和静态方法
- Java静态变量和静态方法
- Java中的静态方法和静态变量
- java静态变量和静态方法优缺点
- java中的静态变量和静态方法
- java 构造方法、static关键字、静态变量、main方法
- JAVA 构造方法 静态方法
- [jzoj]2247. 【2017.12.02普及组模拟】迷恋(DP+思维)
- 文章标题
- Redis的持久化和配置
- 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)
- MySQL简单语法(3)
- java学习 java -- 构造方法 静态变量和方法
- Android-使用Android Studio实现第三方QQ登录
- 用C++编写函数判别一个数是否是质数,在主程序中实现输入输出
- 大连理工大学数据结构上机第三章医院设备管理系统
- Apache Curator入门实战
- samba应用示例
- linux常用命令(4)——用户、权限
- HDU2076夹角有多大
- 一篇不错的shiro文章