1.在类方法中不可以使用this关键字
2.类方法不能调用实例变量或实例方法
3.在执行类时,希望先执行类的初始化动作,可以使用static定义一个静态区域(代码块)
package course3;
public class Student {
//static代码块,可以完成初始化的动作
static{
school = "HSD";
method();
//只可以使用类变量或者类方法,不能定义实例变量或实例方法
//name = "zhangsan";
}
String name;//姓名-实例变量、成员变量、属性
static String school;//学校-类变量
//实例方法,set方法(为实例变量name赋值)
public void setName(String name){
this.name = name;
}
//实例方法,get方法
public String getName(){
return this.name;//或者直接是return name;
}
//类方法
public static void method(){
System.out.println(Student.school);
//以下不可以(类方法不能调用实例变量或实例方法)
//System.out.println(this.name);
//System.out.println(getName());
}
}
package course3;
public class StudentTester {
public static void main(String[] args){
//通过类名.的方式调用类变量
//使用类变量时,尽量直接用类名来引用,这时我们知道这个变量是类变量,会更改该类所有对象的属性
Student.school="Harbin University of Commerce";
Student s1 = new Student();
Student s2 = new Student();
s1.name = "A";
s1.setName("A");
s2.name = "B";
System.out.println("s1的姓名是:" +s1.getName());
System.out.println("s1的学校是:" +s1.school);
System.out.println("s2的姓名是:" +s2.name);
System.out.println("s的学校是:" +s2.school);
//尽量不用对象的方式来调用类变量
s2.school = "HIT";//任一对象修改类变量的值,整个类变量的值都被修改
System.out.println("s1的姓名是:" +s1.name);
System.out.println("s1的学校是:" +s1.school);
System.out.println("s2的姓名是:" +s2.name);
System.out.println("s的学校是:" +s2.school);
Student.method();
}
}
重新认识主方法main()方法
1.main()方法也叫主方法,调用其他方法时,这些方法也要是static类方法
2.main方法没有返回值
3.main方法的形参是数组
Java包(package)
为了更好的组织类,Java提供了包机制,用于区别类名的命名空间。
包的作用:
1.把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
2.如同文件夹一样,包也采用了树形目录的存储方式。
3.同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
4.包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。
Java 使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class)、接口、枚举(enumerations)和注释(annotation)等。
package com.hsd.test;
import com.has.classlearning.Person;
public class tester {
com.has.classlearning.Person p = new Person();
}
import语句
1.调用不在同一个包中的类需要使用import语句。
2.在一个java源程序中可以有多个import语句,它们必须写在package语句和源文件中类的定义之间。
3.如果引入一个包中的某个类,使用如下语句:
import package1.Person;
如果引入一个包中所有的类,使用:
import package1.*;
package com.hsd.test;
import com.has.classlearning.Person;
public class tester {
//建议尽量不要调用不同包中相同名称的类
com.has.classlearning.Person p = new Person();
com.hsd.classpersonteat.Person p2 = new com.hsd.persontest.Person();
}
如果不写权限修饰符,就默认为default
类的封装
封装(Encapsulation)是面向对象方法的重要原则,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。
s.length();//返回当前字符串的长度
String s1 = "hello world";
String s2 = "hello world";
//判断字符串是否相同,不要用s1==s2;
s1.equals(s2);
System.out.println(s1.equals(s2));
System.out.println(s.length());
//字符串substring(x,y)方法
String s_cut5 = s.substring(0,5);
System.out.println(s_cut5);
String s_cut6 = s.substring(6,11);
System.out.println(s_cut6);
int a = Integer.parseInt(s1);//将字符串转化为int
double b = Double.parseDouble(s1);//将字符串转化为double
int i = 10;
String str = "" + i;//将整型转化为字符串