1、构造方法作用: 给对象的数据进行初始化。
语句定义格式:
(1)、方法名与类名相同。
(2)、没有返回值类型,连void都没有。
(3)、没有具体的返回值。
注意:
1、构造方法可以发生重载。
2、如果我们没有提供构造方法,JVM会默认提供一个无参空方法体的构造方法。
3、如果我们提供了构造方法,无论提供的是无参还是带参,系统都不会再提供无参构造方法。
4、构造方法在创建对象的时候调用。
public class ConstructionMethod { private String name; private int age; //定义一个无参构造方法 ConstructionMethod(){ } //定义一个带参构造方法 public ConstructionMethod(String name, int age) { this.name = name; this.age = age; } }
2、给成员变量赋值的两种方式:
(1)、使用setXxx(...)的方式给私有成员变量赋值。
(2)、使用带参数的构造方法给私有的成员变量赋值,这里需要与this关键字配合使用。
class Phone { private String brand; private int price; private String color; //定义无参构造方法 public Phone() { } //定义带参构造方法 public Phone(String brand, int price, String color) { this.brand = brand; this.price = price; this.color = color; } public void setBrand(String brand) { this.brand = brand; } public void setPrice(int price) { this.price = price; } public void setColor(String color) { this.color = color; } public void show() { System.out.println("手机的品牌是: " + brand + " 手机的价格是: " + price + " 手机的颜色是: " + color); } } public class PhoneDemo { public static void main(String[] args) { Phone p1 = new Phone(); //使用set方法赋值 p1.setBrand("1加7T"); p1.setPrice(3999); p1.setColor("玫瑰粉"); //调用show方法输出 p1.show(); //调用带参构造方法赋值 Phone p2 = new Phone("1加8T",2999,"极光蓝"); p2.show(); } }
3、创建对象初始化的流程(Student s = new Student();):
(1)、先将Student.class文件加载到内存中的方法区中。
(2)、在栈内存中为变量s开辟空间。
(3)、在堆内存中为学生对象开辟空间。
(4)、系统给成员变量进行默认赋值(初始化)。
(5)、给成员变量进行显示赋值。
(6)、通过构造方法给成员变量再进行赋值。
(7)、将堆内存中的地址值赋值给栈内存中的变量s。
4、static关键字:
静态的, 它可以修饰成员变量和成员方法, 它的作用是可以让所有的对象共享一个成员变量。
格式:
//国籍应该定义为静态的 private static String country;
static关键字特点:
(1)、随着类的加载而加载, 加载到方法区中的静态区。
(2)、优先于对象而存在的。
(3)、被类的所有对象共享。
(4)、可以通过类名直接调用:
被static修饰的成员可以直接通过类名访问,格式: 类名.静态成员 。
静态修饰的内容我们一般称之为:类成员、与类相关的。
什么时候使用静态static关键字呢?
如果某个成员变量是被所有的对象共享的,那么它就应该被定义为static静态的。
举例现实生活的案例:
哈罗共享单车(可以用静态的修饰)
自己的水杯(不可以用静态的修饰)
5、static关键字使用:
(1)、在静态方法中是没有this关键字的:
this代表的是当前调用该方法的对象,而被static修饰的成员是优先于对象而存在的。
被static修饰的成员是随着类的加载而加载,这时候,还没有对象产生,也就说明没有this关键字,所以在静态方法中无法使用this关键字。
(2)、将成员方法分成两类:
静态的成员方法:
访问的内容:
成员变量: 只能访问静态的成员变量
成员方法: 只能访问静态的成员方法
非静态的成员方法:
访问的内容:
成员变量: 既可以访问非静态的成员变量,也可以访问静态的成员变量
成员方法: 既可以访问非静态的成员方法,也可以访问静态的成员方法
总结一句话: 静态的只能访问静态的。
public class StaticDemo { private String name; private int age; private static String hair; //定义一个静态方法 public static void function(){ } //定义一个非静态方法 public void show() { } //在静态方法中是没有this关键字的 // public static int getAgeAgain(){ // return this.age; // } public static void fun1(){ //静态的成员方法不能访问非静态的成员变量 // System.out.println(name); //静态的成员方法可以访问静态成员变量 System.out.println(hair); //静态的成员方法不能访问非静态的成员方法 // show(); //静态的成员方法可以访问静态的成员方法 function(); } public void fun2(){ //非静态的成员变量可以访问非静态的成员方法 System.out.println(name); //非静态的成员方法可以访问静态成员变量 System.out.println(hair); //非静态的成员方法可以方法非静态的成员方法 show(); //非静态的成员方法可以访问静态的成员方法 function(); } }
6、静态变量与成员变量的区别:
(1)、所属不同:
静态变量属于类,所以也称为为类变量
成员变量属于对象,所以也称为实例变量(对象变量)
(2)、内存中位置不同:
静态变量存储于方法区的静态区
成员变量存储于堆内存
(3)、内存出现时间不同:
静态变量随着类的加载而加载,随着类的消失而消失
成员变量随着对象的创建而存在,随着对象的消失而消失
(4)、调用不同:
静态变量可以通过类名调用,也可以通过对象调用
成员变量只能通过对象名调用
7、main方法的格式讲解:
public static void main(String[] args){ System.out.println("Hello World!"); }
public: 公共的,访问权限是最大的,因为main是由JVM调用的,所以权限要足够大。
static: 静态的,不需要创建对象,通过类名直接调用,方便JVM访问。
void: 表示无返回值,因为我们直接说过返回值,是返回给调用者的,而调用main方法是由JVM调用的,返回给他没有意义。
String[] args: 参数是是一个字符串数组,数组形参名叫args。
String[] args这个东西怎么用?如何传参呢?值去哪里的呢?
在JDK1.5之前,没有Scanner键盘录入的时候,那时候程序员给程序传参就是借助args传参。
怎么用呢?
(1)、IDEA可以直接传参。
(2)、命令传参:
在MainDemo.class文件夹使用cmd
输入java MainDemo hello world java -- 结果在dos窗口输出hello world java(前提在main方法中定义了遍历方法)
public class MainDemo { public static void main(String[] args) { for(int i=0;i
8、工具类的创建注意事项:
(1)、构造方法私有化,不能让外界创建对象。
(2)、将工具类中的方法用静态修饰,可以让外界直接通过类名访问。
如何制作说明书(即帮助文档)?
(1)、创建工具类 (ArrayTool)
(2)、借助文档注释生成帮助文档
怎么用呢?
第一步:创建ArrayTool.java,并使用文档注释
public class ArrayTool { private ArrayTool() { } public static void printArray(int[] array) { for (int i = 0; i < array.length; i++) { if (i == array.length - 1) { System.out.print(array[i] + "]"); } else if (i == 0) { System.out.print("[" + array[i] + ","); } else { System.out.print(array[i] + ","); } } System.out.println(); } public static int[] niXu(int[] array) { for (int start = 0, end = array.length - 1; start <= end; start++, end--) { int temp = array[start]; array[start] = array[end]; array[end] = temp; } return array; } }
第二步:在存放ArrayTool.java的目录下创建一个文件夹doc,并使用cmd:
第三步:使用javadoc -d 目录名 -author -version ArrayTool.java
注意:这里的 “目录名” 指的是点进文件夹doc后的路径名,我的doc存放在 C:Tool 路径下,那么点击doc后目录名就应该是 C:Tooldoc
此时点击doc文件夹可以看到:
说明创建成功。
第四步:点击index.html
这样就可以以帮助文档的形式查看工具类定义了哪些可以使用的方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)