学习第十天,发一个总结帖!
1.基本数据类型,变量
基本数据类型不用过多赘述,其在后面不论是面型对象还有其他知识等都会经常使用;
变量最重要的就是其定义:
这对于我们之后理解自定义类型变量有很大的用处,因为这两种类型的变量,定义方式差不多,学习起来有连贯性。
2.scanner和if循环
scanner
需要导入包使用;
static Scanner sc =new Scanner(System.in)可以定义在全局;sc.next定义在具体位置;
if&&for循环
if&&for中最重要的两点我认为是循环条件以及循环的跳出;
循环的条件一般通过具体情况判断;
无限循环一般内部是某一模块的开始界面,以便于该模块的子模块执行完跳回,当然循环嵌套不宜太多。
循环的跳出可以使用break、添加for(;;)或while(ture)、a:for()+breaka等。
但是结构有好还得是设置FLAG==?,
1.不用增添过多的循环层数;
2.可以针对for循环内不可以使用if--else结构的特性实现循环内的不同条件选择执行;
3.可以有效地避免程序执行顺序问题。
3.数组
数组是学习自定义数据之前很重要的铺垫,可以通过自定义数据类型实现的,一般都可以通过数组实现,只是量的区别;
数组+循环就可以实现最基本的数仓功能。
数仓案例:
=========================================================================
import java.util.Scanner;
public class DataManager {
public static void main(String[] args) {
//数据加载:很多数--->Java如何存数据--->java知识点------>变量 和 数组----数组--->数组的定义格式
double[] datas = new double[200];
for (;;){
System.out.println("------------------欢迎来到数据管理系统--------------------");
System.out.println("1:查看数据");
System.out.println("2:修改数据");
System.out.println("3:添加数据");
System.out.println("4:删除数据");
System.out.println("5:退出系统");
System.out.print("请选择1----5:");
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
if (num == 1){
int temp = 0;
for (int i = 0;i< datas.length;i++){
if (datas[i] !=0.0){
temp++;
System.out.println("数仓的数据有:"+datas[i]);
}
//如果上面一次都没进,意味着没有数据!
if (temp==0){
System.out.println("该数仓没有数据,请先完成添加!");
break;
}
}
} else if (num == 2) {
System.out.print("请输入要修改的数据:");
int updateid = scanner.nextInt();
for (int i = 0;i<datas.length;i++){
if (datas[i] == updateid){
//提醒用户输入新的数据
System.out.print("请输入新的数据:");
datas[i] = scanner.nextInt();
System.out.println("您已修改成功!");
break;
}
}
} else if (num == 3) {
System.out.print("请输入要添加的数据:");
int newdata = scanner.nextInt();
//查询操作 遍历数组,找到为0.0的位置 22 22
for (int i = 0;i<datas.length;i++){
if (datas[i]==0.0){//该位置为空
//插入数据
datas[i] = newdata;
System.out.println("您已添加成功!");
break;//只允许每次只能插入一个!
}
}
} else if (num == 4) {
//开关 : 开
int flag = 1;
System.out.print("请输入要删除的数据:");
int deleteid = scanner.nextInt();
for (int i = 0;i< datas.length;i++){// 12 22
if (deleteid == datas[i]){
datas[i] = 0.0;
flag = 2;
System.out.println("您已删除成功!");
break;
}
}
if (flag==1){
System.out.println("删除失败!");
}
} else if (num == 5) {
System.out.println("您已成功退出!");
//结束程序
System.exit(0);
}
}
}
}
=========================================================================
4.方法
定义方法时,不要考虑是我该定义有返回值还是无返回值,因为当我们调用该方法时,我们需要用值时,自然会知道;
还是三板斧!!!
编写方法三点!
1.我要干什么---决定方法体!
2.need什么东西才能干成---决定形式参数!
3.是否需要返回调用处---决定是否需要返回值及其类型!
阶段测试:学生测试系统
=========================================================================
package text; import java.util.Scanner; public class text { static Scanner sc =new Scanner(System.in); static int flag=0; static String [] nameList=new String[100]; static String [] pwList=new String [100]; static int flag1=0; public static void main(String[] args) { String stuName ="123"; String stuPw = "123"; for (;flag1==0;){ System.out.println("在线考试练习系统"); System.out.println("输入数字选择:(1.练题模式)(2.注册)(3.退出)"); int num = sc.nextInt(); dengluxitong(stuName, stuPw, num); } } private static void dengluxitong(String stuName, String stuPw, int num) { if (num ==1){ System.out.println("===练题模式==="); loginmodel(stuName, stuPw); } else if (num ==2) { System.out.println("请输入账号"); String zhucename = sc.next(); for (int i = 0; i < nameList.length; i++) { if (nameList[i]==null){ nameList[i]=zhucename; System.out.println("请输入密码"); String zhucepw = sc.next(); pwList[i]= sc.next(); break ; } } } tuichumodel(num); } private static void loginmodel(String stuName, String stuPw) { for (;flag==0;){ System.out.println("请登录"); System.out.println("请输入账号:"); String na = sc.next(); System.out.println("请输入密码:"); String pw = sc.next(); if (na.equals(stuName)&&pw.equals(stuPw)){ flag =1; for (;;){ System.out.println("练习题模块"); System.out.println("1.水仙花 2。计算分数 3.计算偶数的和 4.偶数奇数 5.打印星星 6.退出 "); int choice =sc.nextInt(); if (choice==1){ shiuxianhuashu(); } if (choice==2){ System.out.println("任意输入五个人成绩,打印输出总分平均分:"); zongchengjipingjunchengji(); } if (choice==3){ System.out.println("for循环计算100内所有偶数和:"); oushuhe(); } if (choice==4){ System.out.println("0-45所有奇偶数字个数及其对应的和:"); jiougeshuhetongji(); } if (choice==5){ System.out.println("打印星星:"); xingxing(); } if (choice==6){ System.out.println("退出:"); break ; } }//习题模块 } if (flag==0){ System.out.println("账号或密码错误,请重新登录"); } } } private static void xingxing() { for (int i = 0; i < 8; i++) { for (int j = 0; j < i+1; j++) { System.out.print("*"); } System.out.println(); } } private static void jiougeshuhetongji() { int countou=0; int countji=0; int sumou=0; int sumji=0; for (int i = 0; i <=45; i++) { if (i%2==0){ sumou+=i; countou++; } else if (i%2!=0) { sumji+=i; countji++; } } System.out.println("偶数个数为"+countou); System.out.println("偶数和为"+sumou); System.out.println("奇数个数为"+countji); System.out.println("奇数和为"+sumji); } private static void oushuhe() { int sum=0; for (int i = 0; i <= 100; i++) { if (i%2==0){ sum+=i; } } System.out.println(sum); } private static void zongchengjipingjunchengji() { int [] arry =new int[5]; int sum =0; for (int i = 0; i < arry.length; i++) { System.out.println("请输入第"+(i+1)+"个成绩:"); int chengji = sc.nextInt(); arry[i]=chengji; sum+=chengji; } System.out.println("总成绩:"+sum); System.out.println("平均成绩:"+sum/5); } private static void shiuxianhuashu() { System.out.println("任意输入三个数,判断是否是水仙花数:"); System.out.println("请输入一个三位数:"); int shuixianhuashu=sc.nextInt(); if(Math.pow(shuixianhuashu % 10, 3) + Math.pow(shuixianhuashu / 10 % 10, 3) + Math.pow(shuixianhuashu / 100 % 10, 3) == shuixianhuashu){ System.out.println(shuixianhuashu+"是水仙花数"); }else { System.out.println(shuixianhuashu+"不是水仙花数"); } } private static void tuichumodel(int num) { if (num ==3){ System.out.println("退出"); flag1=1; } } }
=========================================================================
5.自定义数据类型
1.基本定义
2.数据图
1.我们为什么要定义基本数据类型
基本数据类型在存储数据时相当于是数组的集合,我们可以看到在Student中,原本需要三个数组存储的数据变成了三个属性(id,那么,age);
2.关于空间
arr是在main中定义的存储Student类型数据的数组,这个行为在栈中开辟了一块空间用来存储arr数组,其中每个位置没有数据前都是null;
下文Student a1 = new Student()也是同样的道理,不过a1数据是Student类的,每个a1都包括三个基本属性,其中的默认值是各自数据类型的默认值。
3.赋值?
从表面看不论是arr还是a1、a2都是在main也就是堆中,但是main中只存储了他们的栈中的地址,访问时并不能直接在main中找到他们存储的数据。
arr[0]=a1;看似是赋值操作,其实是在arr[0]中存储了a1的地址,这样之后使用a[0]时就可以直接根据地址的访问;
6.连接数据库
1.sql基本操作
creata database test ;
drop database test ;
创建新表:
create table ceshi(
ids int auto_increment primary key,
uid varchar(20),
name varchar(20),
class varchar(20),
foreign key(class) references class(code)
);
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
)
表操作:
1. SELECT 列名称 from 表名称
2. INSERT INTO table_name(列1,列2,...) VALUES(值1,值2,...)
3 .UPDATE 表名称 set 列名称 = 新值 WHERE 列名称 = 某值
4. DELETE FROM 表名称 WHERE 列名称 = 值
2.java链接数据库操作
1.Class.forName("com.mysql.cj.jdbc.Driver");
// 加载MySQL JDBC驱动
2.Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db1?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false",
"root",
"123456");
// 使用DriverManager获取数据库连接
3.Connection con = getConnection();
// 获取数据库连接
4.PreparedStatement ps = con.prepareStatement(sql)
// 创建PreparedStatement对象
5.书写操作及占位符(插入举例)
PreparedStatement ps =con.prepareStatement("insert into shoping (id,name,count,price) values(?,?,?,?)");
// 创建PreparedStatement对象
ps.setInt(1,id);
ps.setString(2,name);
ps.setInt(3,count);
ps.setInt(4,price);
ps.execute();
System.out.println("插入成功");
ps.按照占位符数据种类书写(1对应id,以此类推)
小案例:
aboutdb1; import java.sql.*; import java.util.Scanner; public class newDBsystem { private static Connection getConnection() throws Exception { Class.forName("com.mysql.cj.jdbc.Driver"); // 加载MySQL JDBC驱动 Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db1?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false", "root", "123456");// 使用DriverManager获取数据库连接 return con; } static Scanner sc=new Scanner(System.in); //main主类控制执行顺序 public static void main(String[] args)throws Exception { while (true){ System.out.println("====数仓管理系统====="); System.out.println("1.增 2.删 3.改 4.查 5.退出 "); int number = sc.nextInt(); if (number==1){ addmodel(); } if (number==2){ delmodel(); } if (number==3){ updatamodel(); } if (number==4){ checkmodel(); } if (number==5){ break; } } } //添加功能 public static void addmodel() throws Exception { Connection con =getConnection(); System.out.println("===插入界面==="); System.out.print("id:"); int id = sc.nextInt(); System.out.print("name:"); String name =sc.next(); System.out.print("count:"); int count = sc.nextInt(); System.out.print("price:"); int price = sc.nextInt(); PreparedStatement ps =con.prepareStatement("insert into shoping (id,name,count,price) values(?,?,?,?)"); // 创建PreparedStatement对象 ps.setInt(1,id); ps.setString(2,name); ps.setInt(3,count); ps.setInt(4,price); ps.execute(); System.out.println("插入成功"); } //查看功能 public static void checkmodel() throws Exception { Connection con =getConnection(); String sql = "SELECT * FROM shoping"; PreparedStatement ps = con.prepareStatement(sql); ResultSet rs = ps.executeQuery(); System.out.println("================================="); while (rs.next()) { // 遍历结果集 // 使用rs.getXXX("columnName")方法获取每一列的值,并打印出来 System.out.println("ID: " + rs.getInt("id") + ", Name: " + rs.getString("name") + ", count: " + rs.getInt("count") + ", price: " + rs.getInt("price")); } ps.execute(); System.out.println("================================="); } //删除功能 public static void updatamodel() throws Exception { Connection con =getConnection(); System.out.println("===修改界面==="); infoidname(); System.out.print("请输入所要删除的数据对应id,以及其他字段想要修改的值:"); System.out.print("id:"); int id = sc.nextInt(); System.out.print("其他字段的值:"); System.out.print("name:"); String name =sc.next(); System.out.print("count:"); int count = sc.nextInt(); System.out.print("price:"); int price = sc.nextInt(); PreparedStatement ps =con.prepareStatement("update shoping set name =?,count =?,price=? where id=?"); ps.setString(1,name); ps.setInt(2,count); ps.setInt(3,price); ps.setInt(4,id); int i=ps.executeUpdate(); if (i>0){ System.out.println("修改成功!"); } } //修改功能 public static void delmodel() throws Exception { Connection con =getConnection(); System.out.println("===删除界面==="); System.out.print("请输入所要删除的数据对应id:"); int id = sc.nextInt(); PreparedStatement ps =con.prepareStatement("delete from shoping where id = ?"); ps.setInt(1,id); ps.execute(); System.out.println("删除成功"); } //查看id及name public static void infoidname() throws Exception { Connection con = getConnection(); System.out.println("id及名称列表:"); PreparedStatement ps=con.prepareStatement("select id from shoping"); ResultSet resultSet = ps.executeQuery(); while (resultSet.next()){ System.out.print("id:"+resultSet.getInt("id")); System.out.print(" "); } System.out.println(); PreparedStatement ps1=con.prepareStatement("select name from shoping"); ResultSet resultSet1 = ps1.executeQuery(); while (resultSet1.next()){ System.out.print("name:"+resultSet1.getString("name")); System.out.print(" "); } System.out.println(); }
数据库部分不全,以后会补充!