封装:是指隐藏对象的属性和实现细节,仅仅提供对外的公共访问方式。
Private 可以用来修饰成员变量或成员方法。被修饰的只能在本类中被访问
构造方法:给对象的数据进行初始化
构造方法的注意点:
没有返回值类型,void也没有,没有return
构造方法的方法名与类名一样
构造方法不能被调用,当对象实例化后自动执行
1.如果我们没有提供任何形式的构造方法,那么系统将提供一个无参数的构造方法(这里的无参构造不是JVM提供的,是由编译器提供的)
2.如果我们提供了一个无参的构造方法,那么系统将不再提供默认的无参的构造方法
3.如果我们提供了一个带参数的构造方法,由于系统不再提供无参构造,所以我们需要手动添加一个无参构造
4.构造方法可以允许以重载的方式来提供多个构造方法的存在的
如果使用带参构造,那么对象实例化时也需要带参
JavaBean:
1.类必须是公共的、具体的
2.必须提供一个无参构造方法
3.隐藏实现细节和成员属性,对外提供公共的方式
static的特点:
1.可以修饰成员变量和成员方法
2.随着的类加载而加载(优先级最高)
3.他的出生时机要优先对象,所以可以这样调用变量:类.静态变量
4.可以被所有类的对象共享(一旦修改数据,后面的数据也会跟着改变)
static的注意事项:
1.在静态方法是不能存在this关键字的
如何理解?
静态是随着类加载而加载,this是随着对象的创建而加载
静态的加载时机要优先于对象的
2.静态方法只能访问静态的成员变量和成员方法
静态方法:
成员变量:只能访问静态的成员变量
成员方法:只能访问静态的成员方法
非静态方法:
成员变量:可以是静态的,也可以是非静态的
成员方法:可以是静态的,也可以是非静态的
Student s=new Student()在内存中的过程:
1. 先加载Student类
2. 在栈内存中为Student s开辟空间
3. 在堆内存中为new Student()开辟空间
4. 为Student类中的成员变量赋默认值
5. 再对成员变量赋予初始值,没有初始值的按默认值
6. 加载构造方法,对成员变量再次赋值
7. 数据加载完后将new Student()的地址赋给s
最后附上自己写的关于登录的代码:
//测试类
package test;
import java.util.Scanner;
public class UserDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
System.out.println("请输入账号:");
String user=sc.next();
System.out.println("请输入密码:");
String passWord=sc.next();
user u=new user();
u.zc(user, passWord);
u.login(user, passWord);
u.check();
}
}
//这是对象内部
package test;
import java.util.Scanner;
//类名没取好,应该要首字母大写
public class user {
private String []userName=new String [50];//储存用户名
private String []psw=new String [50];//储存密码
public int count=0;//统计输入账号密码次数
public int a=0;//控制开关 1代表登陆成功 0代表登陆失败
Scanner sc=new Scanner(System.in);
//注册
public void zc(String user,String passWord) {
for(int i=0;i<user.length();i++) {
if(user.equals(userName[i])) {
System.out.println("账号已存在!");
break;
}
else {
//判断是否为空,不空则储存
if(userName[i]==null) {
userName[i]=user;
psw[i]=passWord;
System.out.println("注册成功!");
}
}
}
}
public void login(String user,String passWord) {
for(int i=0;i<userName.length;i++) {
if(user.equals(userName[i])&&passWord.equals(psw[i])) {
System.out.println("登录成功!");
a=1;
break;
}
}
//再输入
switch(a) {
case 0:
count++;
System.out.println("你还剩下"+(5-count)+"次机会");
if(5-count>0) {
System.out.println("请重新输入账号:");
String user1=sc.next();
System.out.println("请重新输入密码:");
String passWord1=sc.next();
login(user1,passWord1);
}
break;
case 1:
break;
}
}
public void check() {
if(count==5) {
System.out.println("滚啊!");
}
}
//内置一个变量测试
public user() {
userName[0]="sb";
psw[0]="123";
}
}