目录
心情
今天的知识点真的多,但还好,有很多与之前前端的相似的内容,在理解方面容易点。今天在课上做了很多有意思的练习,想做一个简易计算器、数字游戏之类的。感觉很有意思!!!希望能在Java中发现更多乐趣。。。
知识点
满足大驼峰式命名就是一个类
- JDK:java开发工具包,自带一些类,但只是.class(够用)没有.java
- Java中的字符串只能用双引号
- 引用数据类型
String v1 = "张三";//String没有范围
4.要学会拼接字符串
System.out.println("早上好" + v1 + ",吃饭了吗?");
int m = 8;
do {
++m;
}while (m<8);
5.基本数据类型有8种。
6.除了基本数据从类型,都是引用数据类型
7.什么是包P?--包就是文件夹,起分类作用
包的命名规则
1、尽量使用全小写字母,一个小点(.)代表一级目录
2、包名中尽量不要出现下换线,$号,数字
3、一般情况下,使用站点名的逆序
例如:www.baidu.com = 包名com.baidu.模块名
包名com.baidu.架构名
在开发中根据实际情况写(com.baidu.模块.架构.功能.xxx)
工具
1.Scanner 首字母大写是一个类
2. 构建一个工具用来用键盘在控制台输入内容
Scanner in = new Scanner(System.in);
3.运行停止,用键盘在控制台输入内容
String s = in.next();
System.out.println("你输入了:" + s);
4.in.next()是输入字符串,输入器大数据类型:in.next+数据类型(没有char)
流程控制
/*例题:
* 请输入第一个整数:
* xxxxxxx
* 请输入第二个整数:
* xxxxxxxxx
* 需求:如果第一个数是8,第二个数是9,就打印和
* 如果其中一个是8,1有一个9,就打印两个赎回的差
* 如果两个数中没有8,9,就分别打印两个数
* 用if...else语句
* 1、多重if语句:
* if();
* if();
* ...
* 每个if之间没有联系,这些if可能都运行
* 2、if...else if...else语句:
* else的互斥功能:一套结构至多走一个
* 如果情况比较多,情况判断比较复杂,最后一种情况不建议直接写else,除非有200%的把握,可以写else,否则写else if。
* 3、我们在写if...else if的时候,要注意条件的顺序
* 一般范围小的在上边,范围大的在下边
*
*
*
*
* */
System.out.println("请输入一个整数:");
Scanner in = new Scanner(System.in);
int a = in.nextInt();
System.out.println("请输入另一个整数:");
int b = in.nextInt();
if (a == 8 & b == 9) {
System.out.println("两个数的和为:" + (a + b));
}else if (a == 8 || a== 9 || b == 9 || b == 8 ){
System.out.println("两个数的差为:" + (a - b));
}else if ((a != 8 && a != 9) && (b != 8 && b != 9)){
System.out.println("第一个数为:" + a);
System.out.println("第二个数为:" + b);
}
}
成绩管理系统
//练习:
/* 成绩管理系统:
* 需求:
* 键盘输入成绩
* 如果成绩是60分:及格
* 如果成绩是85分,奖励你一台iPad
* 如果成绩是100分,奖励你一台十三香promax
* 其他情况,没有奖励。
*
*
* Java里的switch智能判断如下数据类型:
* 整型:byte、short、int
* 字符型:char
* string:必须在JDK1.7及以后版本中才能被switch判断
* 枚举:JDK5及以后版本中才能被switch判断
* */
答案1:
Scanner in = new Scanner(System.in);
System.out.println("请输入你的成绩:");
int num1 = in.nextInt();
if (num1 == 60){
System.out.println("及格");
}else if(num1 == 85){
System.out.println("奖励你一台iPad");
}else if(num1 == 100){
System.out.println("奖励你一台十三香promax");
}else if(num1 != 60 & num1 !=85 & num1 != 100){
System.out.println("没有奖励...");
}
答案2(老师):
Scanner in = new Scanner(System.in);
System.out.println("请输入你的成绩:");
int num1 = in.nextInt();
switch (num1){
case 60:
System.out.println("及格");
break;
case 85:
System.out.println("奖励你一台iPad");
break;
case 100:
System.out.println("奖励你一台十三香promax");
break;
default:
System.out.println("没有奖励...");
}
}
数组
//数组一旦声明就必须要指定长度
//一维数组
//声明数组三种方法:常用2、3种
// 1、要用[]:两种写法,以下第一种好
int [] a1 = {1,2,3,4,5};
int a2[] = {1,2,3,4,5};
// Java中[]只有声明数组长度是在等号右边,其余都出现等号左边
// {}在等号右边
//2、只有长度
int [] a3 = new int [5];
//3、有长度有值
int [] a4 = new int[]{1,2,3,4};
//重新赋值
a4 = new int [5];
a4 = new int[]{1,2,3,4};
//直接输出,输出的是虚地址()
System.out.println(a2);
//访问数组元素通过下标(索引)
//下标(索引)从0开始
System.out.println(a2[0]);
/*
* 数据类型的初始值:
* byte、short、int、long;0
* float、double:0.0
* char:\u0000或是‘ ’(空白)
* Boolean:false
* String:null
* */
//二维数组:二维数组中每个元素又是一个一维数组
//数组一旦声明就必须要指定长度:二维数组只要声明一维数组的个数就可以
int [][] b1 = new int [5][];
//开发中最多用到二维数组,但...
//多维数组:只需要指定n维度数组的n-1维数组长度即可(别担心,不用)
//数组长度是属性,不是方法
//取值
System.out.println(a2[100]);
//bug:下标越界bug
// 会看bug:bug原因,bug具体内容,bug位置
// 当程序出现bug,bug后续代码不运行
//赋值
a3[100] = 100;
//只要越界,取值赋值都不行
//练习
/* 创建一个数组
*通过键盘输入,给数组中元素赋值...
* 不能用循环
* */
int [] a = new int[3];
Scanner sc = new Scanner(System.in);
int a1 = sc.nextInt();
a[0] = a1;
System.out.println("数组第一个数为" + a1);
int a2 = sc.nextInt();
a[1] = a2;
System.out.println("数组第二个数为" + a2);
int a3 = sc.nextInt();
a[2] = a3;
System.out.println("数组第三个数为" + a3);
System.out.println("数组的数据为:" + a[0] + a[1] + a[2]);
循环
* for循环
* 初始化条件:可用int等定义,var也可以但不用
* 判断条件
* 循环体
* 循环条件
*/
//初始化条件可以是任意类型,大部分(90%)情况使用int
for (int i = 0;i< 10;i++){
System.out.println("i=" + i);
}
//练习
// 打印一个5*5的矩形
//用循环嵌套
//要求用不换行的打印输出
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print("*");
}
System.out.println();
}
执行流程
1、i=0 外层for循环启动
2、执行外层的for循环的循环体
3、走里层的for循环(循环体)
4、里层的for循环想要走完要从i=0到i=4
5、里层的循环体执行完之后相当于外层执行一次
6、然后执行外层i++
7、在此启动外循环
...
*//*
debug
*/
break 和 continue
for (int i = 0; i < 10; i++) {
//需求 数7
//从0 ~ 100,尾数是7,或7的倍数
if (i % 7 == 1 || i % 10 == 7) {
System.out.println("你数到了:" + i + ",喝酒吧!");
//跳出循环
// break;
//continue+循环标签:终止当前次循环,并开启下一次循环
continue;
} else {
System.out.println(i);
}
System.out.println("哈哈哈!");
}
循环标签(也叫goto功能,不是goto语法)
//可用break+循环标签,直接终止循环标签的循环继续运行循环后的代码
a:for (int i = 0; i < 10; i++) {
for (int j = 0; j < 5; j++) {
System.out.println("j=" + j);
if (j == 3){
//break 和continue智能控制最近的循环
// break;
continue;
}
System.out.println("哈哈哈");
}
System.out.println("i=" + i);
}
foreach:增强for循环
//使用for循环遍历数组
int [] arr = new int[]{12,45,76,89,-50};
//遍历,把数组中的元素都操作一遍
for (int i = 0;i < arr.length;i++){
System.out.println(arr[i]);
}
//forwach语句(增强for循环)遍历数组
//可以理解为把数组中元素通过镜像给i
//我们操作的不是原始数据,我们操作的是镜像数据
//所以foreach的操作更加安全,不影响原始数据
//foreach是JDK5以后才有的
//JDK5、JDK8是革命性的版本
for (int i : arr){
//i 就是数组中元素
System.out.println(i+1);
}
while循环
int i = 10;
while (i < 100){
System.out.println(i);
i++;
}
//do ...while
int i1 = 10;
do {
System.out.println(i);
i++;
}while (i < 100);
while和do...while的区别:
do...while循环无论条件是否满足,循环至少执行一次。
while循环如果条件不满足,一次都不执行。
// 二维数组遍历
int [][] arr = new int[2][];
arr[0] = new int[]{1,2,3,4};
arr[1] = new int[]{-1,-2,-3,-4,-5};
//取出第一堆数组里的第二个元素
System.out.println(arr[1][2]);
普通for循环
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
//获取二维数组的元素
System.out.println(arr[i][j]);
}
System.out.println();
}
加强for循环
for (int [] ints : arr){
for (int anInt : ints){
System.out.println(anInt + "、");
}
System.out.println();
}
猜数字游戏
键盘输入一个数字用一个变量存起来
猜猜输入的是什么?
请输入一个数字:
20
数字保存成功,猜猜数字是几
比较大小,如果大了,就提示大了,如果小了就提示小了
知道猜到这个数
用哪种循环、判断都行
答1:
Scanner s = new Scanner(System.in);
System.out.println("请输入一个数字");
int numi = s.nextInt();
System.out.println("数字保存成功!请猜猜这是数字几");
m:for (;;){ int num2 = s.nextInt();
if (num2 > numi){
System.out.println("猜大了哦,再猜猜看!");
continue m;
}else if (num2 < numi){
System.out.println("猜小了哦,再猜猜看!");
continue m;
}else{
System.out.println("恭喜你猜对啦!!!");
break;
}
}
答2:
Scanner s = new Scanner(System.in);
System.out.println("请输入一个数字");
int numi = s.nextInt();
System.out.println("数字保存成功!请猜猜这是数字几");
while (true) {
int num2 = s.nextInt();
if (num2 > numi) {
System.out.println("猜大了哦,再猜猜看!");
} else if (num2 < numi) {
System.out.println("猜小了哦,再猜猜看!");
} else {
System.out.println("恭喜你猜对啦!!!");
break;
//终止程序执行
//0:安全退出(一般不用)
//-1:强制退出(用的不多)
//System.exit(0);
}
}
练习:计算器
从键盘输入两个数和一个字符
加减乘除
打印输出计算结果
注意:
除数不能为0
符号输入不对怎么办
计算器能不能一直算下去
《会运用到死循环for(;;){}!!!!!》要求:
请输入第一个数:
2
请输入第二个数:
2
请输入运算符号:
*
计算结果为:2*2=4
是否继续计算:
1、是
2、否
(如果输入3怎么办)
答1:没有是否进行计算功能
Scanner s = new Scanner(System.in);
System.out.println("请输入第一个数:");
double num1 = s.nextDouble();
System.out.println("请输入运算符号:");
String a = s.next();
System.out.println("请输入第二个数:");
double num2 = s.nextDouble();
if (a == "/" & num2 == 0){
System.out.println("除数不能为0,请重新输入:");
}else {
switch (a) {
case "+":
System.out.println(num1 + "+" + num2 + "=" + (num1 + num2));
break;
case "-":
System.out.println(num1 + "-" + num2 + "=" + (num1 - num2));
break;
case "/":
System.out.println(num1 + "/" + num2 + "=" + (num1 / num2));
break;
case "*":
System.out.println(num1 + "*" + num2 + "=" + (num1 * num2));
break;
default:
System.out.println("请输入运算符号:");
}
}
答2:
Scanner sc = new Scanner(System.in);
index:for(;;){
System.out.println("请输入第一个数:");
double num1 = sc.nextDouble();
n2:for(;;){
System.out.println("请输入第二个数:");
double num2 = sc.nextDouble();
fh:for(;;){
System.out.println("请输入运算符号:+-*/");
String sep = sc.next();
switch(sep){
case "+":
System.out.println(num1 + sep + num2 + "=" + (num1 + num2));
break;
case "-":
System.out.println(num1 + sep + num2 + "=" + (num1 - num2));
break;
case "*":
System.out.println(num1 + sep + num2 + "=" + (num1 * num2));
break;
case "/":
if(num2 == 0){
System.out.println("除数不能为0,计算错误...");
continue n2;
}else {
System.out.println(num1 + sep + num2 + "=" + (num1 / num2));
break;
}
default:
System.out.println("符号输入错误,请重新输入...");
continue fh;
}
c:for(;;){
System.out.println("是否继续计算:1、继续 2、退出");
String flag = sc.next();
// 我让你输入1或者2,你非得输入3,结果就是你去重新选择
switch (flag){
case "1":
// 继续计算
continue index;
case "2":
// 退出计算
System.out.println("计算器即将关闭,谢谢使用...");
break index;
default:
// 再重新让你选择一次
System.out.println("您输入的有误,请重新选择!!!");
continue c;
}
}
}
}
}