第二天
目标一:Java基础
java运算符
-
算数运算符:+,-,*,/,%,++,--
-
赋值运算符:=
-
关系运算符:>,<,<=,>=,!=instanceof
public class Day02 { public static void main(String[] args) { //二元运算符 int a =10; int b=20; int c=20; int e=20; System.out.println(a+b); System.out.println(a-b); System.out.println(a*b); System.out.println(a/(double)b); //======================================== long i =123456789789L; int z = 123; short x = 10; byte d =8; System.out.println(i+z+x+d);//long System.out.println(z+x+d);//Int System.out.println(x+d);//Int //======================================= //关系运算符返回的结果: 正确,错误, 布尔值 //if System.out.println(a>b); System.out.println(a<b); System.out.println(a=b); System.out.println(a!=b); System.out.println(z%a);//取余,模运算 //++自增,--自减 一元运算符 int m = 3; int n = m++;//执行完成这行代码后,先给n赋值,再自增 //m++ m=m+1 System.out.println(m); int r = ++m;//执行完这行代码,在自增,接着赋值给r //++m m=m+1 System.out.println(m); System.out.println(n); System.out.println(r); //幂运算 很多运算会使用工具类进行实现 double pow =Math.pow(2,3); System.out.println(pow); } }
-
逻辑运算符:&&,||,| (与或非)
//逻辑运算符 //与 或 非 boolean a = true; boolean b = false; System.out.println("a && b: "+(a && b)); //逻辑与运算,两个变量都为真,结果为true System.out.println("a || b: "+(a || b));//逻辑或运算,两个变量有一个为真,结果为true System.out.println("!(a && b): "+!(a && b));//如果是真,则为假 //短路运算 int c =5; boolean d =(c<4)&&(c++<4); System.out.println(d); System.out.println(c);
-
位运算符:&,|,^,~,>>,<<,>>>
/* A= 0011 1100 B= 0000 1101 ---------------------- A&B//0000 1100 A|B //0011 1101 A^B //0011 0001 ~B //1111 0010 2*8=16 2*2*2*2 效率很高! << 左移 *2 >> 右移 /2 0000 0000 0 0000 0001 1 0000 0010 2 0000 0011 3 0000 0100 4 0000 1000 8 0001 0000 16 */ System.out.println(2<<3);//16
-
条件运算符?:
-
扩展赋值运算符:+=,-=,*=,/=
int a=10; int b =20; a+=b;//30 a=a+b //字符串连接符 +,String System.out.println(""+a+b);//1020 System.out.println(a+b+"");//30 //三元运算符 //x ? y : z 如果x值为真,结果为y,否则结果为z int score = 80; String type = score<60?"不及格":"及格";//掌握 System.out.println(type);
(idea快捷键:ctrl+d 复制当前行到下一行)
-
优先级()
包机制
-
本质就是一个文件夹
-
一般用公司域名倒置作为包名:
-
例如: www.baidu.com 建包:com.baidu.www
-
-
-
定义包:package
-
导包 用import 进行导包 (Alt + enter)
-
import.*
-
-
《阿里巴巴开发手册》
Java DOC
-
参数信息
-
@author 作者名
-
@version 版本号
-
@since 指明需要最早使用的jdk版本
-
param 参数名
-
return 返回值情况
-
@throws 异常抛出情况
-
-
用处
-
win+R//在代码文件下进入
-
cmd
-
javadoc -encoding UTF-8 charset UTF-8 DOC.java
-
在文件下生成一个index.html
-
点击可以查看(java文档)
-
-
学会查找使用IDEA生产JavaDoc文档!
就能在代码目录下生成了index.html文件了
目标二:Java控制流程
Scanner对象
可以通过Scanner类来获取用户的输出
-
语法
-
Scanner s = new Scanner(System in)
-
-
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据
//next //创建一个扫描器对象,用于接收键盘数据 Scanner scanner = new Scanner(System.in); System.out.println("使用next方法接收:"); //判断用户有没有输入字符串 if(scanner.hasNext()){ String str = scanner.next(); System.out.println("输入的内容:"); System.out.println(str); } //凡是属于IO流的类如果不关闭会一直占用资源,要养成好习惯用完就关掉 //IO流:输入输出流 scanner.close();
//nextLine //创建一个扫描器对象,用于接收键盘数据 Scanner scanner = new Scanner(System.in); System.out.println("nexyLine:"); if(scanner.hasNextLine()){ String str = scanner.nextLine(); System.out.println("输入的内容:"); System.out.println(str); } //凡是属于IO流的类如果不关闭会一直占用资源,要养成好习惯用完就关掉 //IO流:输入输出流 scanner.close();
-
next()
-
一定要读取到有效字符后才能结束输入
-
对疏通有效字符之前遇到空格/空白,next()方法会自动将其去掉
-
只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
-
next()不能得到带有空格的字符串
-
-
nextLine()
-
以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符串
-
可以获得空白
-
Scanner sc = new Scanner(System.in); System.out.println("输入:"); String str = sc.next(); System.out.println(str); scanner.close();
Scanner进阶使用
Scanner sc =new Scanner(System.in); //从键盘直接接收数据 int i =0; float f =0.0f; System.out.println("请输入整数:"); if (sc.hasNextInt()){ i=sc.nextInt(); System.out.println("整数数据:"+i); }else { System.out.println("输入的不是整数"); } System.out.println("请输入小数:"); if (sc.hasNextFloat()){ f=sc.nextFloat(); System.out.println("小数:"+f); }else { System.out.println("输入的不是小数"); } sc.close();
Scanner sc =new Scanner(System.in); //和 double sum =0; //计算输入了多少个数字 int i =0; //通过循环判断是否还有输入,并在里面对每一次进行求和与统计 while(sc.hasNextDouble()){ double x = sc.nextDouble(); i=i+1; sum = sum + x; System.out.println(sum); System.out.println((sum/i)); } sc.close();
顺序结构
-
Java的基本结构就是顺序结构,顺序结构是最简单的算法结构
-
它是有若干个以此执行的处理组成的,它是任何一个算法都离不开的一种基本算法结构
System.out.println("hi1"); System.out.println("hi2"); System.out.println("hi3"); System.out.println("hi4"); System.out.println("hi5");
选择结构
if单选择结构
-
语法
//if(布尔表达式){ //如果布尔表达式为true将执行的语句 //} //例如: Scanner scanner = new Scanner(System.in); System.out.println("请输入一个内容"); String s =scanner.nextLine(); //equals:判断字符串是否相等 if (s.equals("hi")){ System.out.println(s); } System.out.println("End"); scanner.close(); }
if双选择结构
-
语法
//if(布尔表达式){ //如果布尔表达式为true将执行的语句 //}else{ //如果布尔表达式为false将执行的语句 //} Scanner scanner = new Scanner(System.in); System.out.println("请输入考试成绩:"); double s = scanner.nextDouble(); if (s>60){ System.out.println("及格"+s); }else{ System.out.println("不及格"+s); } scanner.close();
if多选择结构
-
语法
//if(布尔表达式1){ //如果布尔表达式1为true将执行的语句 //}else if(布尔表达式2){ //如果布尔表达式2为true将执行的语句 //}else i(布尔表达式3){ //如果布尔表达式3为true将执行的语句 //}else{ //如果布尔表达式为false将执行的语句 //} 例如: Scanner scanner = new Scanner(System.in); System.out.println("请输入考试成绩:"); double s = scanner.nextDouble(); if (s>90&&s<=100){ System.out.println("优秀"+s); }else if(s>80&&s<=90){ System.out.println("良好"+s); }else if (s>60&&s<=80){ System.out.println("及格"); }else{ System.out.println("不及格"); } scanner.close();
嵌套的if结构
-
语法
//if(布尔表达式1){ //如果布尔表达式1为true将执行的语句 //}if(布尔表达式2){ //如果布尔表达式2为true将执行的语句 //}
switch多选择结构
-
switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支
-
变量类型:
-
byte、short、int 或者 char
-
从java SE 7 开始
-
switch 支持字符串String 类型了
-
同时 case标签 必须为字符串常量或字面量
-
-
语法
//switch(expression){ // case value : //语句 // break;//可选 //case values : //语句 // break;//可选 //你可以有任意数量的case语句 // default : //可选 //语句 //} 例如: //case 穿透 //switch 匹配一个具体的值 char greade ='F';//未知 switch (greade){ case 'A': System.out.println("优秀"); break; case 'B': System.out.println("良好"); break; case 'C': System.out.println("及格"); break; case 'D': System.out.println("不及格"); break; default: System.out.println("未知"); }
//JDK7的新特性,表达式结果可以是字符串!!! //字符的本质还是数字 //反编译 java----<class(字节码文件)----反编译(IDEA) String name = "中国"; switch (name){ case "中国": System.out.println("中国"); break; default: System.out.println("????"); }
循环结构
-
while循环
-
do....while循环
-
for循环
-
还有一种增强型for循环
-
while循环
while(布尔表达式 ){ //循环内容 }
-
只要布尔表达式为true,循环一直执行下去
-
大多数情况是会让循环停下来的,我们需要一个让表达式失败的方式来结束循环
-
少部分需要一直执行,例如服务器的请求响应监听等
-
我们正常情况要避免死循环,因为会导致程序卡死或者性能下降
int i=0; int a =0; while(i<=100){ a=a+i; i++; } System.out.println(a); //死循环 while(true){ //等待客户端连接 //定时检查 }
do...while循环
do{ //代码语句 }while(布尔表达式);
-
do...while循环至少会执行一次
-
while和do...while的区别:
-
while先判断后执行。dowhile是先执行后判断
-
int i=0; int a =0; do{ a=a+i; i++; }while(i<=100); System.out.println(a);//5050
//两者对比 int i=0; int a =0; while(a<0){ System.out.println(a); a++; } System.out.println("================"); do{ System.out.println(a); a++; }while(a<0);
for循环
-
for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构
-
for循环执行的次数是在执行前就确定的
-
语法:
for(初始化;布尔表达式;更新){ //代码语句 }
int oddSum=0; int evenSum=0; for (int a =1;a<=100;a++){ if(a%2!=0){ evenSum+=a; }else{ oddSum+=a; } } System.out.println("奇数的和:"+evenSum); System.out.println("偶数的和:"+oddSum); for (int i = 0; i <=1000; i++) { if (i%5==0){ System.out.print(i+"\t"); } if (i%(5*3)==0){ //当i%15取余为零就换行 System.out.println(); } } //println 输出完会换行 //print 输出完不会换行
//九九乘法表 //1.先打印第一列 //2.把固定的1再用一个循环包起来 //3。去掉重复项,i<j //4.调整样式 for (int j = 1; j <= 9; j++) { for (int i = 1; i <= j; i++) { System.out.print(j+"*"+i+"="+(j*i)+"\t"); } System.out.println();
增强for循环
-
用于数组或集合
-
语法
-
for(声明语句:表达式){ //代码句子 }
-
-
声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等
-
表达式:表达式是要访问的数组名,或者是返回值为数组的方法
//定义数组 int [] numbers = {10,20,30,40}; for (int i =0;i<4;i++){ System.out.println(numbers[i]); } System.out.println("=================="); //遍历数组的元素 for (int x:numbers){ System.out.println(x); }
break continue
-
break用于强行退出循环;不执行循环中剩余的语句
-
continue用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判断
int i =0; while(i<100){ i++; System.out.println(i); if (i==20){ System.out.println("===================="); continue; } if (i==30){ break; } }
-
关于goto关键字(了解)
-
goto仍然还是java的保留字,但未在语言中得到正式使用;但是依旧能看到它的影子:带标签的break和continue
-
"标签"是指后面跟一个冒号的标识符,像:label:
-
//输出10到90之间的质数 int count = 0; outer:for(int i =10;i<90;i++){ for (int j =2 ;j<i/2;j++){ if(i%j==0){ countinue outer; } System.out.print(i+" "); } }
练习
-
打印三角形
for (int i = 1; i <=5; i++) { for (int j = 5; j >=i; j--) { System.out.print(" "); } for (int j =1 ;j<=i ;j++){ System.out.print("*"); } for (int j =1 ;j<i ;j++){ System.out.print("*"); } System.out.println(); }