Day 2 :2021.3.2
Java 基础语法
变量、常量、作用域
(int,short,long,byte,float,double,boolean)
变量与常亮的作用域:
-
类变量
前面加 static (静态的)
-
实例变量
从属于对象,如果不进行初始化将转为默认值
String(默认null);布尔值(flase);整形(默认0)
-
局部变量
必须声明或初始化(在一类方法中有效)
-
引用实例变量
变量类型 变量名字 = new 变量名字()
如:Demo02 demo02 = new Demo02();System.out.println(demo02.name);
-
常量
前面加 final (常量)(修饰符不存在先后顺序)
前面加 static final (静态的常量)(类常量,可直接使用)
变量名的命名规范
-
类成员变量:首字母小写和驼峰原则:monthSalary
-
局部变量:首字母小写和驼峰原则
-
常量:大写字母和下划线:MAX_VALUE
-
类名:首字母大写和驼峰原则:Man,GoodMan
-
方法名:首字母小写和驼峰原则:run(),runRun()
public class Demo02 { //属性:变量 //类变量 static static double salary = 2500; //实例变量:从属于对象;如果不进行初始化将转为默认值; String name;//(默认null)(布尔值默认false) int age;//(默认0或0.0) //常量(修饰符不存在先后顺序) final static double PI = 3.14; //main方法 public static void main(String[] args) { //局部变量;必须声明和初始化值(只在一类的方法内有效) int i = 10; System.out.println(i); //变量类型 变量名字 = new demo02(); Demo02 demo02 = new Demo02(); System.out.println(demo02.age); System.out.println(salary); } //其他方法 public void add(){ } }
基本运算符
- 算数运算符:+,-,*,/,%(取余),++(自增),–(自减)
- 赋值运算符:=,+=(i+=1相当于i=i+1),-=,*=,/=
- 关系运算符:>,<,>=,<=,==(等于),!=(不等于) , instanceof
- 逻辑运算符:&&(与),||(或),!(非)(短路运算)
- 位运算符:&,|,^,~,>>,<<,>>>
- 条件运算符:?:
public class Demo02 {
public static void main(String[] args) {
//二元运算符 Ctrl+D 复制当前行到下一行;
// %(取余)
int a = 2;
int b = 11;
System.out.println(b%a);
// ++(自增) --(自减)
System.out.println(++a);//先自增 再赋值
System.out.println(a++);//先复制 再自增
//幂运算 2^3 2*2*2 = 8 很多运算会使用工具类来做
double pow = Math.pow(2,3);
System.out.println(pow);
//位运算
/*
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<<3运算速度最快(<<=*2,>>=/2)
System.out.println(2<<3);
//赋值运算
a += b;//a = a + b;
a -= b;//a = a - b;
//字符串连接符 +
System.out.println(a+b);//=13
System.out.println("1"+a+b);//=1211
System.out.println(a+b+"1");//=131
// 三元运算符
// x ? y : z (如果x=true,则结果为y,否则结果为z)
}
}
JavaDoc命令
@author 作者名
@version 版本号
@since 指明需要最早使用的jdk版本
@param 参数名
@return 返回值情况
@throws 异常抛出情况
如何生产程序包:
javadoc -encoding UTF-8 -charset UTF-8 文件名.java
用IDEA生产javadoc文档:
https://zhinan.sogou.com/guide/detail/?id=316513277579
- 建立一个存放JavaDoc的文件
- 点击IDEA顶部的Tools菜单,选择Generate JavaDoc
- 点击Output directory输入框后面的按钮并选择保存路径
- 在地底部的Locale输入框配置语言和编码集,语言用zh_CN代表中文,并输入-encoding UTF-8 -charset UTF-8
- 点击确定,然后就可生成JavaDoc文档,在index中可查看
Java流程控制
用户交互Scanner
next():
-
一定要读取到有效字符后才可以结束输入。
-
对输入有效字符之前遇到的空白,next()会自动去掉。
-
只有输入有效字符后才将其后面输入的空白作为分隔符或结束符。
-
next()不能得到带有空格的字符串。
nextLine():
-
以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
-
可以获得空白。
用nextLine更好一点,可以带空格输入
package com.hong.Demo01;
import java.util.Scanner;
public class Demo03 {
public static void main(String[] args) {
//创建一个扫描对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextLine方式接收:");
//判断用户有没有输入字符串(默认等于true)(if 判断也可以没有)
if (scanner.hasNextLine()){
//使用nextLine方式接收
String str = scanner.nextLine();
System.out.println("输出的内容为:"+str);
}
//凡是属于IO(输入输出)流的类如果不关闭会一直占用资源,要养成习惯用完就关掉
scanner.close();
}
}
更改之后的代码为:
package com.hong.Demo01;
import java.util.Scanner;
public class Demo03 {
public static void main(String[] args) {
//创建一个扫描对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数据:");
String str = scanner.nextLine();
System.out.println("输出的内容为:"+str);
//凡是属于IO(输入输出)流的类如果不关闭会一直占用资源,要养成习惯用完就关掉
scanner.close();
}
}
Scanner的进阶用法
判断输入是否为整数或小数
(int,float,short,byte,long,double,boolean)
if 语句的运用
package com.hong.Demo01;
import java.util.Scanner;
public class Demo03 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//从键盘接收数据
int i = 0;
float f = 0.0f;
System.out.println("请输入整数:");
//如果...那么
if (scanner.hasNextInt()){
i = scanner.nextInt();
System.out.println("整数数据:" + i);
}else{
System.out.println("输入的不是整数数据");
}
System.out.println("请输入小数:");
//如果...那么
if (scanner.hasNextFloat()){
f = scanner.nextFloat();
System.out.println("小数数据:" + f);
}else{
System.out.println("输入的不是小数数据");
}
scanner.close();
}
}
输入多个数字求和与平均值
while 语句的运用
package com.hong.Demo01;
import java.util.Scanner;
public class Demo04 {
public static void main(String[] args) {
//我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果;
Scanner scanner = new Scanner(System.in);
//和
double sum = 0;
//计算输入了多少个数字(通过循环来判断是否还有输入,并对每一次进行求和和统计)
int m = 0;
while (scanner.hasNextDouble()){
double x = scanner.nextDouble();
m++;//m=m+1;
sum += x;//sum=sum+x
}
System.out.println(m + "数的和为" + sum);
System.out.println(m + "数的平均值为" + (sum/m));
scanner.close();
}
}
顺序结构
从上往下依次运行
package com.hong.Demo01;
public class ShunXuDemo {
public static void main(String[] args) {
System.out.println("hello1");
System.out.println("hello2");
System.out.println("hello3");
System.out.println("hello4");
System.out.println("hello5");
}
}
选择结构
if单选择结构
if (布尔表达式){如果布尔表达式为true将执行语句
}
package com.hong.Demo01;
import java.util.Scanner;
public class XuanZeDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入内容:");
String s = scanner.nextLine();
if (s.equals("Hello")){
System.out.println("Hello");
}
//equals()比较字符串是否一致
System.out.println("End");
scanner.close();
}
}
if双选择结构
if(布尔表达式){//如果布尔表示式的值为true
}else{//如果布尔表达式的值为Flase
}
package com.hong.Demo01;
import java.util.Scanner;
public class XuanZeDemo {
public static void main(String[] args) {
//考试分数大于60就是及格,小于60分就是不及格
Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩:");
int score = scanner.nextInt();
if (score>60){
System.out.println("及格");
}else {
System.out.println("不及格");
}
scanner.close();
}
}
if多选择结构
if(布尔表达式){//如果布尔表达式1的值为true执行代码}
else if(布尔表达式){//如果布尔表达式2的值为true执行代码}
else if(布尔表达式){//如果布尔表达式3的值为true执行代码}
else (布尔表达式){//如果布尔表达式4的值为true执行代码}
package com.hong.Demo01;
import java.util.Scanner;
public class XuanZeDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("输入成绩");
int score = scanner.nextInt();
if (score==100){
System.out.println("恭喜满分");
}else if (score<100 && score>=90){
System.out.println("A级");
}else if (score<90 && score>=80){
System.out.println("B级");
}else if (score<80 && score>=70){
System.out.println("C级");
}else if (score<70 && score>=60){
System.out.println("D级");
}else if (score<60 && score>=0){
System.out.println("不及格");
}else {
System.out.println("输入成绩不合法");
}
scanner.close();
}
}
嵌套的if结构
if(布尔表达式1){
//如果布尔表达式1的值为true执行代码
if(布尔表达式2){//如果布尔表达式2的值为true执行代码}
}
switch多选择结构
swith(expression){
case value ://语句
break;//可选
case value ://语句
break;//可选
//case语句数目任意
default ://可选
//语句
}
package com.hong.Demo01;
public class XuanZeDemo {
public static void main(String[] args) {
//Scanner scanner = new Scanner(System.in);
// char grade = 'A';
//String name = scanner.next();
//char ' ' ; String “ ”
String name = "hong";
switch (name){
case "A":
System.out.println("优秀");
break;
case "B":
System.out.println("良好");
break;
case "C":
System.out.println("及格");
break;
case "D":
System.out.println("再接再厉");
break;
case "E":
System.out.println("挂科");
break;
default:
System.out.println("未知等级");
//scanner.close();
}
}
}
循环结构
while 循环
while (布尔表达式){//循环内容
}
package com.hong.Demo01;
public class WhileDemo01 {
public static void main(String[] args) {
//输出1-100
int i = 0;
while (i<100){
i++;
System.out.println(i);
}
System.out.println(i);
//死循环
while (true){
}
}
}
do…while 循环
do {//代码语句
}while(布尔表达式);
package com.hong.Demo01;
public class DoWhileDemo {
public static void main(String[] args) {
//1+2+....+100
int i =0;
int sum = 0;
do {
sum += 1;
i++;
}while (i<100);
System.out.println(sum);
}
}
while:先判断,再循环
do while:先循环,再判断
for 循环
for(初始化;布尔表达式;更新){//代码语句
**}
package com.hong.Demo01;
public class ForDemo01 {
public static void main(String[] args) {
int a = 1;//初始化值
while (a<100){//条件判断
System.out.println(a);//循环体
a += 2;//迭代
}
System.out.println("while循环结束:"+a);
//初始化值;条件判断;迭代
//100.for 可以直接生成以下语句块
for (int i=1;i<=100;i++){
System.out.println(i);
}
System.out.println("for循环结束:");
//for (; ; ) 也是一个死循环
}
}
-
练习1:计算0到100之间的奇数和偶数的和
package com.hong.Demo01; public class ForDemo02 { public static void main(String[] args) { //练习1:计算0-100之间的奇数和偶数的和 int oddsum = 0; int evensum = 0; for (int i = 0; i < 100; i++) { if (i%2!=0){//奇数 oddsum+=i; }else{//偶数 evensum+=i; } } System.out.println("奇数的和:"+oddsum); System.out.println("偶数的和:"+evensum); } }
-
练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3
package com.hong.Demo01; public class ForDemo3 { public static void main(String[] args) { //练习2:用while或for循环输出1-1000之间能被5整除的数,并每行输出3个 for (int i = 0; i <= 1000; i++) { if (i%5==0){ System.out.print(i+"\t"); } if (i%(5*3)==0){ System.out.println(); //System.out.println("\n"); } } //println 输出会换行 //print 输出不会换行 int a = 0; while (a <=1000){ a++; if (a%5==0){ System.out.print(a+"\t"); } if (a%(5*3)==0){ System.out.println(); //System.out.println("\n"); } } } }
-
练习3:打印九九乘法表
- 先给出一列的结果
- 再给出全部的结果
- 对结果显示模式进行修改
package com.hong.Demo01; public class ForDemo04 { public static void main(String[] args) { 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(声明语句:表达式){//代码语句
}
package com.hong.Demo01;
public class ForDemo05 {
public static void main(String[] args) {
int[] numbers = {10,20,30,40,50};//定义了一个数组
for (int i = 0;i<5;i++){
System.out.println(numbers[i]);
}
//遍历数组的元素
for (int x:numbers){
System.out.println(x);
}
}
}
break 和 continue
break
用于强行退出循环(强制退出循环整体)
package com.hong.Demo01;
public class BreakDemo01 {
public static void main(String[] args) {
int i = 0;
while (i<100){
i++;
System.out.println(i);
if (i==30){
break;
}
}
}
}
continue
用于终止某次循环(在循环中结束某次循环过程,循环整体依旧继续)
package com.hong.Demo01;
public class ContinueDemo01 {
public static void main(String[] args) {
int i = 0;
while (i<100){
i++;
if (i%10==0){
System.out.println();
continue;
}
System.out.print(i);
}
}
}
goto
带标签的continue
package com.hong.Demo01;
public class GotoDemo01 {
public static void main(String[] args) {
//打印101-150之间所有的质数
int count = 0;
//不建议使用
outer:for (int i=101;i<=150;i++){
for (int j=2;j<i/2;j++){
if (i % j ==0){
continue outer;
}
}
System.out.print(i+" ");
}
}
}
练习题
打印三角形
先打空白再打“*”
package com.hong.Demo01;
public class TextDemo01 {
//打印三角形
//5行
public static void main(String[] args) {
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();
}
}
}
小记
快捷方式
-
Ctrl+D:复制当前行到下一行
-
Scanner 结构
Scanner scanner = new Scanner(System.in); scanner.hasNext();//是否继续输入 scanner.next();//输入值 scanner.close();
-
equals:比较字符串是否一致
-
100.for:表示1-100的for循环
-
for (int x:numbers):遍历numbers数组中的数
-
‘ ’:表示数字或者字符;“ ”:表示字符串
-
switch多选择结构中(case,default)