1,包
- 组织代码,避免命名冲突
- 使用域名反写的方式命名包,包的层次与文件系统保持一致
JDK里面的包:
java.io:处理IO操作
java.nio:New IO
java.lang:基础类
java.math:算术运算
java.net:网络编程
java.sql:关系数据库的操作
java.time:日期时间操作
java.util:集合框架,工具类
使用包中的类,接口....
import package.*;
import package.class;
在使用不同的包中相同名的类时,可以使用全限定名使用该类
特别注意:在java.lang中的类,无需显式导入
静态导入:import static package.class.staticFiled/staticMethod
Eclipse; Ctrl+Shift+O 优化导入
导入不识别的类
移除导入的但未使用的类
按照一定的规则排序导入语句
2,访问控制修饰符
private:它可以修饰属性(成员),方法,类(内部类),意味着修饰的属性或方法只能在本类中访问到,达到封装的目的
default:没有关键字,可以修饰属性,方法,类, 意味着修饰的属性,方法或类,只能在本包访问到
protected,(多是父子内的调用限定)
public:它可以修饰属性(成员),方法,类,意味着修饰的属性,方法或类可以被任何代码访问
设计原则:从最严格的访问控制(private)开始,然后使用访问控制更大的关键字
实际开发:绝大部分的类是public,类中的方法大部分是public
目前建议:属性一定使用private,使用public的setter与getter来获取值。
关于属性的命名:1,不要使用单个字母(如:n);2,不要使用只有一个小写字母开头的属性(uName)
建议:1.名词,2,至少开头的两个字母小写 3,多个单词,第二个单词开始首字母大写
1,声明一个用户(User)类,属性有姓名(name),性别(gender),出生年月(birthdate:1990-01-02)
2,声明一个用户管理(UserManager)类,其中声明一个大小为10的用户数组(users)作为其属性
定义方法add(User)将用户依次增加到users中,当数组已满时,产生一个新的大小为原数组1.5倍的数组(扩容),将原来的用户及新加的用户保存进去,实际上就产生了一个动态增加容量的数组(ArrayList)
3,编写测试类,在main方法中测试
public class User { private String name; private String gender; private String birthdate; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getBirthdate() { return birthdate; } public void setBirthdate(String birthdate) { this.birthdate = birthdate; } }
public class UserManager { private User[] users = new User[2]; private int num = 0; public void add(User u) { if (num == users.length - 1) { User[] x = new User[users.length * 3 / 2]; for (int i = 0; i < users.length; i++) { x[i] = users[i]; } users = x; } users[num] = u; num++; } public void show() { for (int i = 0; i < num; i++) { System.out.print(users[i].getName() + " "); System.out.print(users[i].getBirthdate() + " "); System.out.print(users[i].getGender() + " "); } } }
public class Test { public static void main(String[] args) { // TODO Auto-generated method stub UserManager userManager=new UserManager(); User user1=new User(); User user2=new User(); user1.setBirthdate("19980101"); user1.setGender("男"); user1.setName("suxiao"); userManager.add(user1); userManager.show(); System.out.print(" "); user2.setBirthdate("19980101"); user2.setGender("男"); user2.setName("suxiao"); userManager.add(user2); userManager.show(); System.out.print(" "); User user3=new User(); user3.setBirthdate("19980101"); user3.setGender("男"); user3.setName("suxiao"); userManager.add(user3); userManager.show(); } }
3,static关键字
使用场景:
1 修饰属性:所有的实例共享该属性,调用时无需实例化,直接使用类名.属性,适用于保存系统全局变量
2 修饰方法: 调用时无需实例化,直接使用类名.方法,适用于实现独立的工具方法
3 静态导入:
4 静态代码块
5 静态内部类
4,构造方法
语法:方法名与所在的类名完全一样,没有返回值类型,其他与普通方法一致
作用:对实例进行初始化:属性赋初始值,读取默认参数....
特点:如果没有显式的构造方法,编译器会默认创建一个无参的构造方法,其访问控制修饰符与类一致
如果有显式的构造方法,则默认无参构造方法就不存在
用法:使用new调用,或者使用super调用
TM:
功能:
1:用户注册
2,用户登录
3,查询余额
4,存款
5,取款
6,转账
7,退出
类设计:
用户
用户操作类
业务操作类
全局数据保存类
测试类
public class User { private String name; private String password; private double balance; private boolean islogin; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public double getBalance() { return balance; } public void setBalance(double balance) { this.balance = balance; } public boolean isIslogin() { return islogin; } public void setIslogin(boolean islogin) { this.islogin = islogin; } }
public class Userpro { public void yanzheng(User u) { for (int i = 0; i < database.num; i++) { if (database.users[i].getName().equals(u.getName())) { System.out.println("用户已存在"); return; } } database.users[database.num] = u; database.users[database.num].setBalance(0); database.num++; System.out.print("用户注册成功"); } public void login(String name,String password){ int x=0; for (int i = 0; i < database.users.length; i++) { if(database.users[i].getName().equals(name)){ if(database.users[i].getPassword().equals(password)){ database.users[i].setIslogin(true); System.out.print("登陆成功"); x=1; break; } } } if(x==0){System.out.print("cowu");} } }
public class Yewuopr { public void in(String name, double money) { for (int i = 0; i < database.num; i++) { if (database.users[i].getName().equals(name)) { database.users[i].setBalance(money+database.users[i].getBalance()); System.out.print("存钱成功"); break; } } } public void out(String name, double money) { for (int i = 0; i < database.num; i++) { if (database.users[i].getName().equals(name)) { database.users[i].setBalance(database.users[i].getBalance()-money); System.out.print("取钱成功"); break; } } } public void show(){ for (int i = 0; i < database.num; i++){ System.out.print(database.users[i].getBalance()); } } public void zz(String name, String name2,double money) { int p=0; int q=0; for (int i = 0; i < database.num; i++) { if (database.users[i].getName().equals(name)) { p=1;q=i; } } if(p==1){for (int i = 0; i < database.num; i++) { if (database.users[i].getName().equals(name2)) { database.users[q].setBalance(database.users[q].getBalance()-money); database.users[i].setBalance(database.users[i].getBalance()+money); System.out.print("zhuan钱成功"); break; } } } } }
public class database { static User[] users=new User[10]; static int num=0; }
import java.util.Scanner; public class Test2 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scanner=new Scanner(System.in); Userpro userpro=new Userpro(); Yewuopr yewuopr=new Yewuopr(); while(true){ System.out.print("请选择操作 1,注册,2,登录"); int x=scanner.nextInt(); if(x==1){ User user1=new User(); System.out.print("用户名"); user1.setName(scanner.next()); System.out.print("密码"); user1.setPassword(scanner.next()); userpro.yanzheng(user1); System.out.print(" "); } else { User user1=new User(); System.out.print("用户名"); String name=scanner.next(); System.out.print("密码"); String password=scanner.next(); userpro.login(name, password); System.out.print(" "); while(true){ System.out.print("选择业务 1,存款,2,取款 ,3,转账 4展示"); int x1=scanner.nextInt(); if(x1==1){ System.out.print("用户名 金额"); String name1=scanner.next(); double money=scanner.nextDouble(); yewuopr.in(name1, money); System.out.print(" "); }else if(x1==2){ System.out.print("用户名 金额"); String name1=scanner.next(); double money=scanner.nextDouble(); yewuopr.out(name1, money); System.out.print(" "); }else if(x1==4){ yewuopr.show(); System.out.print(" "); }else if(x1==3){ System.out.print("用户名 用户名 金额"); String name1=scanner.next(); String name2=scanner.next(); double money=scanner.nextDouble(); yewuopr.zz(name1,name2, money); System.out.print(" "); } } } } } }
现 在一个作业要写好长。。。。。。。。。。。。看着好累