二维数组
/**
* 输出
* 123
* 456
* 789
* @author Administrator
*
*/
public class TestMulArray {
public static void main(String[] args) {
int [][] ints = new int[3][3];
int num =1;
for (int i = 0; i < ints.length; i++) {
for (int j = 0; j < ints[i].length; j++) {
ints[i][j] = num++;
}
}
for (int i = 0; i < ints.length; i++) {
for (int j = 0; j < ints[i].length; j++) {
System.out.print(ints[i][j]+" ");
}
System.out.println();
}
}
}
java语言中类的定义
java语言中对象的创建
对象在jvm中的存储结构
一个java类可以产生N个属于此类型的对象(实例),类是制造对象的模板;对象是类的具体表现形式。
封装
描述对象的信息就是属于此对象类中的成员属性(成员变量)
实例成员属性定义
实例成员属性的访问
访问修饰符
类属性与常量属性
实例属性属于对象,访问(赋值/取值)必须通过对象完成
访问修饰符
关键字 | 描述 | 本类中 | 同包中 | 不同包中 |
---|---|---|---|---|
public | 公共的 | 允许 | 允许 | 允许 |
protected | 保护的 | 允许 | 允许 | 子类允许 |
缺省 | 默认的 | 允许 | 允许 | 不允许 |
private | 私有的 | 允许 | 不允许 | 不允许 |
访问修饰符修饰属性表明此属性可以在哪些范围内可以进行访问,对属性的访问限制能够达到更安全的目的隐藏数据细节,这种机制是面向对象的封装特性。
static 修饰的属性是类属性,归类所有,所有对象共享static属性的值
final修饰的属性变成常量,必须显示赋值,不能在任何时候更改常量的值
静态数据随着类的加载被加载,优先于实例数据
构造方法
构造方法结构与作用
带参数的构造方法
构造方法重载
方法名称与类名完全相同,没有任何返回类型。这样的方法时构造方法(构造器)。
带参数的构造器目的是为了对象成员属性初始化
具体根据业务情况使用不同的构造器为对象进行初始化
构造器应用
package com.xzit.entity;
/**
* 学生类别,表示学生实体数据
* @author Administrator
*
*/
public class Student {
/**
* 定义类的成员实例属性,实例属性数据归对象所有,必须使用对象或对象的引用进行访问
*/
public String name;//姓名,public修饰的属性可以被任何地方创建的对象直接访问
int age;//却省修饰的属性可以在同一个包内被创建的对象直接访问
private String address;//private修饰的属性私有,只可以在本类中直接访问
private char sex;
private double height;
//static 修饰的属性是类属性,属于类的特征,其的值被所有属于此类的对象共享
//static 属性规范使用类型进行访问
public static String feature = "学习";
public static final int MAX_AGE =80;
public static void main(String []args) {
Student student =new Student();
System.out.println("年龄是"+student.age);
System.out.println("姓名是"+student.name);
System.out.println("身高是"+student.height);
System.out.println("地址是"+student.address);
System.out.println("性别是"+student.sex);
}
}
package com.xzit.test;
import com.xzit.entity.Student;
public class TestCreateObject {
public static void main(String[] args) {
/**
* 通常使用 new 运算符调用自定义类的构造方法实现创建属于这个类的对象(实体)
*/
Student student;//声明自定义类型
student = new Student();//使用构造方法创建对象
Student student0;
student0 = new Student();
System.out.println(student ==student0);//使用== 判断对象是否相同(是否持有同一个对象的句柄)
Student student2 = student;//对象赋值给对象
System.out.println(student2 == student);//具有同一句柄引用的是对象同一(对象相等)
System.out.println(student);
}
}
package com.xzit.test;
import com.xzit.entity.Student;
public class TestStaticPro {
public static void main(String []args) {
Student student = new Student();
Student student0 = new Student();
System.out.println(Student.feature);//使用类名称规范访问
System.out.println(student.feature);//不提倡使用对象访问static属性
}
}
package com.xzit.test;
import com.xzit.entity.Student;
public class TestStudent {
public static void main(String[] args) {
Student student0 = new Student();
//对象属性必须通过对象进行访问(赋值和取值)
student0.name = "令狐冲";
String nameNew = student0.name;
System.out.println(nameNew);
}
}
带参数的构造器
package com.xzit.domain;
public class Employee {
private String name;
private int workAge;
private int sex;
//构造方法的第一作用是用来创建对象
/**
* 使用带参数的构造器实现在创建对象是对其进行初始化(为成员属性赋值)
* this 关键字在构造器及实例方法,代表指向
* @param sex
*/
Employee(String n,int s,int w){
name = n;
workAge = w;
sex = s;
System.out.println(name+workAge+sex);
}
public Employee() {
super();
}
}
package com.xzit.domain;
public class TestConstructor {
public static void main(String[] args) {
Employee employee =new Employee("令狐冲", 1, 4);
}
}