您的位置 首页 java

Java基本语法

关键字和保留字

关键字:被 Java 语言赋予了特殊含义,用作专门用途的 字符串 (单词),所有字母都小写

保留字:go、 const

标识符

比如:类名、变量名、方法名、接口名、函数名、包名(自己起名的地方)

命名规则:

  • 由26个英文字母大小写、0-9、_或$
  • 不可以使用关键字和保留字,可以包含
  • 严格区分大小写,长度无限制
  • 不能以数字开头
  • 不能包含空格

命名规范:

  • 包名:多单词组成时所有字母都小写:xxxyyyzzz
  • 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
  • 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
  • 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ

变量

  • 格式:数据类型 变量名 = 变量值;
  • 变量必须先声明,后使用
  • 变量都定义在其作用域内,只能在作用域内使用
  • 同一个作用域,不可声明两个名称相同的变量
  • 成员变量和局部变量

数据类型

基本数据类型

  • byte : 整型 1字节(8bit位) -128~127
  • short :整型 2字节
  • int: 整型 4字节 默认为Int型,通常也声明为Int型,
  • long: 整型 8字节 声明时要以l或L结尾
  • float: 浮点型 单精度(7位 有效数字 ) 4字节 声明时要以f或F结尾
  • double:浮点型 双精度(14位有效数字) 8字节 默认为double型,通常也声明为double型
  • char:字符型 2字节,使用’ ‘;有且只能放一个, 转义字符
  • boolean :布尔型 true、false,常在条件判断、 循环语句 中使用

引用数据类型

  • 类class
  • 接口interface
  • 数组array

自动类型提升:byte\short\char–> Int –>long–>float–>double

byte,short, char 之间不会相互转换,他们三者在计算时首先转换为int类型。

强制类型转换:(int)12.3>>12 ;可能造成精度降低或溢出

 public class Variable2 {
    public  static   void  main(String[] args){
        //自动类型提升
        short a = 1;
        char b = 'a';
        int c = a + b;
        System.out.println(c);//98
        
        char a1 = 'A';
        char a2 = 65;//编译通过 A
        double b1 = a1;
        System.out.println(b1);//65.0
        
        //强制类型转换
        double d = 12.8;//截断,精度损失
        int e = (int)d;
        System.out.println(e);//12
        System.out.println((int)12.3);//12
        
        int d1 = 128;
        byte e1 = (byte)d1;
        System.out.println(e1);//-128
        
        //要注意的编码情况
        long l = 123456;//定义 long 类型时不加l默认为int型,int转换为long
        System.out.println(l);//123456 123456默认为Int,会强制转换为long
        long l1 = 12345678910;//编译失败,12345678910超过Int范围
        long l2 = 12345678910l;//编译成功
        System.out.println(l2);//12345678910
        
        byte by = 12;
        byte by1 = by + 1;//编译失败  byte计算时会自动转换为Int
        
        float f = 12.3;//编译失败,不加f默认为double型不能自动转换为float
        float f1 = 12.3f;//编译成功
    }
}  

String 变量类型

  • String属于引用数据类型,翻译为字符串
  • 声明 string 类型变量时,使用“”
  • String可以和8种基本数据类型变量做运算,且只能是连接运算:+,运算结果是String类型
 public class stringtest {
        public static void main(String[] args){
            //计算时只要有String型,结果就全为String型
            //string练习1
            char c = 'a';
            int num = 10;
            String str = "wangwei";
            System.out.println(c + num + str);//107wangwei
            System.out.println(c + str + num);//awangwei10
            System.out.println(c + (num + str));//a10wangwei
            System.out.println(str + num + c);//wangwei10a
            System.out.println(str + (num + c));//wangwei107
            
            //string练习2
            System.out.println("*   *");//* *
            System.out.println('*' + '\t' + '*');//93
            System.out.println('*' + "\t" + '*');//*  *
            System.out.println('*' + '\t' + "*");//51*
            System.out.println('*' + ('\t' + "*"));//*  * 
            
            char c1 = '';//编译不通过
            String str1 = "";//编译通过
            String str2 = abc;//编译不通过
            String str3 = abc + "";//编译通过
            String str3 = 3.5f + "" + 1;//3.51
        }
    }  

转义字符:

  • \b:退格符
  • \n:换行符
  • \r:回车符
  • \t: 制表符
  • \”: 双引号
  • \’: 单引号
  • \\: 反斜线

字符集

0~31及127:控制字符或通信专用字符

48~57:0-9

65~90:A-Z

97~122:a-z

进制 (了解)

  • 计算机底层都以 二进制 进的形式存在,以补码的方式来存储数据
  • 计算机都以以二进制进行运算,减去一个正数等于加上一个负数所以引入反码补码概念,十进制进行呈现输出
  • 二进制(binary):0b或0B开头,0,1;最高位0表示正数,最高位1表示负数;正数的原码、 反码 、补码相同
  • 原码:二进制原始编码(负数的原码是其正数补码的最高位为1,然后求反码和补码)
  • 反码:最高位(符号位)确定为1,其他位按位取反
  • 补码:反码加1
  • 八进制 octal ):0开头,0-7
  • 十进制(decimal):0-9
  • 十六进制(hex):0x或0X开头,0-9及A-F(此处A-F不区分大小写)
  • 二进制>>十进制:sum(x*z^(n-1))
  • 十进制>>二进制:除2取余的逆
  • 二进制>>八进制:每3个一位拼接
  • 二进制>>十六进制:每4个一位拼接
 package com.shangguigu. java ;

import java.util.Scanner;

public class test{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.print("请输入一个整数:");
        int value = input.nextInt();
        String bin = Integer.toBinaryString(value);
        System.out.println(value+"的二进制数是"+bin);
        String oct = Integer.toOctalString(value);
        System.out.println(value+"的八进制是"+oct);
        String hex = Integer.toHexString(value);
        System.out.println(value+"的十六进制是"+hex);         
    }
}  

运算符

算术运算符

  • +(正数)、-(负数)、+(加)、-(减)、*(乘)、/(取商)、%(取余)
  • ++a(前,先自增1然后再运算)、a++(后,先运算然后再自增1) 自增1不会改变数据类型
  • –a(前,先自增1然后再运算)、a–(后,先运算然后再自增1)
  • +(字符串连接)使用在string之间以及string和其他类型之间
 public class  arithmetic  {
    public static void main(String[] args){
        //取商
        System.out.println(12 / 5);//2
        System.out.println(12 / 5 * 5);//10
        System.out.println((double)(12 / 5));//2.0
        System.out.println((double)12 / 5);//2.4
        //取余
        System.out.println(12 % 5);//2
        System.out.println(-12 % 5);//-2
        System.out.println(12 % -5);//2
        System.out.println(-12 % -5);//-2
        
        //++、--(同理)
        int a = 10;
        int a1 = a++;//先取值
        int a2 = ++a;//先运算
        System.out.println(a1);//10
        System.out.println(a2);//12
        System.out.println(a);//12
        
        int b = 10;
        int b1 = ++b;//先运算
        int b2 = b++;//先取值
        System.out.println(b1);//11
        System.out.println(b2);//11
        System.out.println(b);//12
        
        //注意点
        //aa++和++a本身也属于运算
        int aa = 10;
        aa ++ ;//++ aa; //以上两种写法aa都为11
        System.out.println(aa);//11
        
        //byte范围为-128~127,计算时超过127范围后会从~128重新开始
        byte bb = 127;
        bb ++ ;
        System.out.println(bb);//-128
        
        //+可以把非字符串转换成字符串
        System.out.println("5+5="+5+5);//5+5=55
        
        //练习题:随意一个三位整数,分别输出百位、十位、个位
        int num = 234;
        System.out.println("百位为:"+num / 100);//2
        System.out.println("十位为:"+num % 100 / 10);//3
        //System.out.println("十位为:"+num / 10 % 10);//3
        System.out.println("个位为:"+num % 100 % 10);//4
        //System.out.println("个位为:"+num % 10);//4
    }
}  

赋值运算符

  • 符号=,不会改变数据类型
  • 拓展:+=、-=、*=、/=、%=
 public class setvalue {
    public static void main(String[] args){
        //赋值符号:=
        int a = 10;
        int b = 10;
        //连续赋值
        int a1,b1;
        a1 = b1 =10;
        //共同赋值
        int a3 = 10,b3 = 20;
        
        //拓展+=、-=、*=、/=、%=
        int num = 10;
        System.out.println(num += 2);//12  相当于num = num + 2
        System.out.println(num -= 2);//10  相当于num = num - 2
        System.out.println(num *= 2);//20  相当于num = num * 2
        System.out.println(num /= 2);//10  相当于num = num / 2
        System.out.println(num %= 3);//1   相当于num = num % 2
        
        //练习1
        short s = 3;
        //s = s+2;//编译报错,s+2为Int型,s为short型
        s += 2; //编译通过,+=不改变数据类型
        
        //练习2   
        int i = 1;
        i *= 0.1;//0.1为double型,但是*=不改变数据类型,结果为int型0.1,相当于强转为int型,发生了截断结果为0
        System.out.println(i);//0

        //练习3
        int m = 2;
        int n = 3;
        n *= m++; //n = n * m++
        System.out.println("m=" + m);//3
        System.out.println("n=" + n);//6
        
        //练习4
        int n1 = 10;
        n1 += (n1++) + (++n1);//n1 = n1 + ((n1++) + (++n1))
        System.out.println(n1);//32     
    }
}  

比较运算符

  • ==、!=、<、>、<=、>=、 instanceof
  • ==可以比较数值,可以进行应用数据类型间的比较不能比较字符串(字符、英文、汉字)
  • 比较运算符的运算结果都是boolean,要么是false要么是true
 public class compare{
    public static void main(String[] args){
        int a = 10;
        int b = 20;
        System.out.println(a == b);//false
        System.out.println(a = b);//20 把b赋值给a,然后输出a
    }
}  

逻辑运算符

  • &(与,执行完运算)、&&(短路与,一旦遇到假,后面不参与运算) &和&&运算结果相同
  • |(或,执行完运算)、||(短路或,一旦遇到真,后面不参与运算) |和||运算结果相同
  • !(非)、^(异或,相同为false,不同为true)
  • 逻辑运算符操作的都是boolean类型的变量,结果也是boolean型
  • Java中不可以写成3<x<6,需写成x>3&x<6
 public logic {
    public static void main(String[] args){
        boolean a = false;
        int num = 10;
        int num1 = 10;
        System.out.println(a & num++ > 10);//false,a为false,&后面继续执行
        System.out.println(num);//11
        
        System.out.println(a && num1++ > 10);//false,a为false,&&后面不执行
        System.out.println(num1);//10
        
        //练习题
        int x = 1;
        int y = 1;
        if(x++ == 2 & ++y == 2){//false&true
            x = 7;}
        System.out.println("x=" + x + ",y=" + y);//2,2
        
        int x1 = 1;
        int y1 = 1;
        if(x1++ == 2 && ++y1 == 2){//false&& 后面不执行
            x1 = 7;}
        System.out.println("x1=" + x1 + ",y1=" + y1);//2,1
        
        int x2 = 1;
        int y2 = 1;
        if (x2++ == 1 | ++y2 == 1){//ture|true
            x2 = 7;}
        System.out.println("x2=" + x2 + ",y2=" + y2);//7,2
        
        int x3 = 1;
        int y3 = 1;
        if(x3++ == 1 || ++y3 == 1){//ture||后面不执行
            x3 = 7;}
        System.out.println("x3=" + x3 +",y3=" + y3);//7,1
        
        //加强练习
        boolean x4=true;
        boolean y4=false;
        short z=42;
        if(y4=true) z++;//z=43
        if((z++==43)&&(y4=true))z++;//z=45
        if((x4=false)||(++z==46)) z++;//47
        System.out.println("z="+z);     
    }
}  

位运算符 (用的较少)

  • 位运算是对整数的二进制进行的运算
  • 位运算符操作的都是整型的数据
  • << 左移:向左移n位相当于乘上2^n,比如3<<2,结果为3*2^2=12
  • >>右移:被移位的二进制最高位是0空缺位补0; 最高位是1空缺位补1
  • 向左移n位相当于除以2^n,比如3>>1,结果为3/2^1=1
  • >>>无符号右移:被移位二进制最高位无论是0或者是1,空缺位都补0
  • &与、|或、^异或、~取反:二进制进行计算,0看作false,1看作ture

三元运算符

  • 结构:(条件表达式)?表达式1:表达式2
  • 条件表达式的结果为boolean类型,为true时执行表达式1,为false时执行表达式2
  • 表达式1和表达式2要求为同一类型,或者可以转换为同一类型,结果接收者类型与之同步
  • 可嵌套使
  • 三元运算符 可以改写为if-else,反之不成立;优先使用三元运算符(效率高)
 public class sanyuan {
    public static void main(String[] args){
    //获取两个数中的最大值
    int a = 10;
    int b = 20;
    int num = (a > b) ? a : b;
    String str = (a > b) ? "a大" : ((a == b) ? "a和b相等" : "b大");
    System.out.println(num);//20
    System.out.println(str);//b大
    
    //获取三个数中的最大值
    int x = 10;
    int y = 20;
    int z = 30;
    int max1 = (x > y) ? x : y;
    int max2 = (max1 > z) ? max1 : z;
    //int max = (((x > y) ? x : y) > z) ? ((x > y) ? x : y) : z;//不建议
    System.out.println(max2);//30
    //System.out.println(max);
    }
}  

键盘输入Scanner

  • 第一步:导包 import java.util.Scanner;
  • 第二步:Scanner实例化 Scanner input = new Scanner(System in);
  • 第三步:调用Scanner类 input.nextXxx()
  • 应输入指定接收的数据类型,如果输入的数据类型和要求的类型不一致,会报错InputMisMatchException
 package com.shangguigu.java;

import java.util.Scanner;

public class test{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        
        System.out.print("请输入您的姓名:");
        String name = input.next();
        
        System.out.print("请输入您的性别(男/女):");
        String sex = input.next();
        
        System.out.print("请输入您的年龄:");
        int age = input.nextInt();
        
        System.out.print("请输入您的身高:");
        double hight = input.nextDouble();
        
        System.out.print("您是否单身(false/true):");
        boolean single = input.nextBoolean();
        if(single){
            System.out.println("您叫"+name+",您是一个"+sex+"生,您今年"+age+"岁了,您的身高是"+hight+",您是一个单身狗!");
        }
        else{
            System.out.println("您叫"+name+",您是一个"+sex+"生,您今年"+age+"岁了,您的身高是"+hight+",您不是单身!");   
        }   
    }
}  

程序流程控制

顺序结构

分支结构

if else

  • if…else(条件表达式后面可以不加{})
  • 程序中else可选,可写可不写
 package com.shangguigu.java;

import java.util.Scanner;

public class ifelse {
    public static void main(String[] args){
        //if笔试题1
        boolean x = true;
        boolean y = false;
        int z = 40;
        if((z++ == 40)&&(y = true)){
            z++;    
        }
        if((++z == 43)||(x = false)){
            z++;
        }
        System.out.println("z="+z);//44
        
        //if笔试题2
        int x1 = 4;
        int y1 = 1;
        if(x1 > 2){
            if(y1 > 2){
                System.out.println(x1 + y1);
                }
            else{
                System.out.println("atguigu");
                }
        } 
        else
            System.out.println("x1 is " + x1);//atguigu
            
        //if笔试题3
        boolean boo = true;
        if(boo == false) //if(b = false) 则输出c
            System.out.println("a");
        else if(boo)
            System.out.println("b");
        else if(!boo)
            System.out.println("c");
        else
            System.out.println("d");        
        
                        
        //if练习题1:岳小鹏的成绩
        Scanner input = new Scanner(System.in);
        System.out.print("请输入岳小鹏的成绩:");
        int source = input.nextInt();       
        if(source == 100){
            System.out.println("成绩为"+source+"分,奖励一辆BMW");
        }
        else if(source > 80 && source <= 99){
            System.out.println("成绩为"+source+"分,奖励一台iphone14 pro max");
        }
        else if(source >= 60 && source <= 80){
            System.out.println("成绩为"+source+"分,奖励一个ipad");
        }
        else{  //程序中else可选,可写可不写
            System.out.println("成绩为"+source+"分,什么奖励也没有");
        }
                
        //if练习题2:从小到大输出三个数
        //Scanner input = new Scaneer(System.in);
        System.out.print("请输入三个整数:");
        int a = input.nextInt();
        int b = input.nextInt();
        int c = input.nextInt();
        System.out.println("输入的三个整数分别为:"+a+"、"+b+"、"+c);
        if (a > b && b > c){
            System.out.println("输入的三个整数从小到大一次是"+c+"、"+b+"、"+a);
        }
        else if (a > c && c > b){
            System.out.println("输入的三个整数从小到大一次是"+b+"、"+c+"、"+a);
        }
        else if (b > a && a > c){
            System.out.println("输入的三个整数从小到大一次是"+c+"、"+a+"、"+b);
        }
        else if (c > a && a > b){
            System.out.println("输入的三个整数从小到大一次是"+b+"、"+a+"、"+c);
        }
        else if (b > c && c > a){
            System.out.println("输入的三个整数从小到大一次是"+a+"、"+c+"、"+b);
        }
        else {
            System.out.println("输入的三个整数从小到大一次是"+a+"、"+b+"、"+c);
        }
        
        //if练习题3:判断两数之和
        int num1 = 25;
        int num2 = 30;
        if(num1 + num2 >= 50){
            System.out.println("两数之和大于等于50!");
        }
        else{
            System.out.println("两数之和小于50");
        }
        
        //id练习题4:判断两数大小
        double num3 = 5;
        double num4 = 20;
        if(num3 > 10.0 && num4 < 20.0){
            System.out.println(num3 + num4);
        }
        else{
            System.out.println(num3 * num4);
        }
        
        //if练习题5:狗的年龄
        //Scanner input = new Scanner(System.in);
        System.out.print("请输入狗的年龄:");
        double dogage = input.nextDouble();
        if(dogage <= 2){
            System.out.println("狗的年龄是"+dogage+",相当与人的年龄"+(10.5*dogage)+"岁!");
        }
        else{
            System.out.println("狗的年龄是"+dogage+",相当于人的年龄"+(21+4*(dogage-2)));
        }
        
        //if练习题6:彩票
        //Scanner input = new Scanner(System.in);
        System.out.print("请输入一个两位数:");
        int caipiao = input.nextInt();
        System.out.println("您输入的数字是:"+caipiao);
        //Math.random() [0.0,1.0)
        //公式:[a,b] (int)(Math.random()*(b-a+1)+a)
        int value = (int)(Math.random() * 90 + 10);//随机获取一个两位数 [10,99]
        System.out.println("产生的随机数是:"+value);
        
        if(caipiao / 10 == value / 10 && caipiao % 10 == value % 10){
            System.out.println("奖金10000美元!");
        }
        else if (caipiao / 10 == value % 10 && caipiao % 10 == value / 10){
            System.out.println("奖金3000美元");
        }
        else if (caipiao / 10 == value / 10 && caipiao % 10 != value % 10){
            System.out.println("奖金1000美元");
        }
        else if (caipiao / 10 == value % 10 || caipiao % 10 == value / 10){
            System.out.println("奖金500美元");
        }
        else{
            System.out.println("彩票作废");
        }
        
        //if练习题7:高富帅
        //==:比较的是两个字符串内存地址(堆内存)的数值是否相等,属于数值比较;
        //equals():比较的是两个字符串的内容,属于内容比较;
        //Scanner input = new Scanner(System.in);
        System.out.print("请分别输入男方的身高(cm)、财富(千万)、帅否(是否):");
        int hight = input.nextInt();
        double money = input.nextDouble();
        String face = input.next();
        if(hight > 180 && money > 1 && face.equals("是")){
            System.out.println("我一定嫁给他!");
        }
        else if(hight < 180 && money < 1 && face.equals("否")){
            System.out.println("不嫁!");
        }
        else{System.out.println("嫁吧,比上不足,比下有余!");
        }
    }
}  

switch case

  • switch-case结构
  • break关键字是可选的,要注意加与不加的区别
  • defaule关键字也是可选的,位置也是可选的(一般放在最后面)
  • 表达式:byte、short、int、char、string、枚举类型
  • case后面只能声明常量,不能声明范围,不能使用变量或不确定的表达式
  • switch-case都可以转换为if else,反之不成立;优先用switch,因为效率更高
 /*
switch-case结构

switch(表达式):{
case 常量1:
    语句1;
    //break;
case 常量2:
    语句2;
    //break;
......
case 常量n:
    语句n;
    break;
default:
    语句;
    //break;
}
*/
package com.shangguigu.java;

import java.util.Scanner;

public class switchcase {
    public static void main(String[] srgs){
        Scanner input = new Scanner(System.in);
        
        //练习1
        System.out.print("请输入一个整数:");
        int number = input.nextInt();
        switch(number){
        case 0:
            System.out.println("zero");
            break;
        case 1:
            System.out.println("one");
            break;
        case 2:
            System.out.println("two");
            break;
        case 3:
            System.out.println("there");
            break;
        default:
            System.out.println("other");
            break;//default之后的break加不加一样加不加一样
        }       
        
        //练习2
        System.out.print("请输入现在的季节:");
        String season = input.next();
        switch(season){
        case "spring":
            System.out.println("春暖花开!");
            break;
        case "summer":
            System.out.println("夏日炎炎!");
            break;
        case "autumn":
            System.out.println("秋高气爽");
            break;
        case "winter":
            System.out.println("白雪皑皑!");
            break;
        default:
            System.out.println("您输入的季节有误!");
            break;
        }
        
        
        //练习3:case执行结果相同的可以省略结果表达式
        System.out.print("请输入月份:");
        int m = input.nextInt();
        switch(m){
        case 3:
        case 4:
        case 5:
            System.out.println("春节");
            break;
        case 6:
        case 7:
        case 8:
            System.out.println("夏节");
            break;
        case 9:
        case 10:
        case 11:
            System.out.println("秋节");
            break;
        case 12:
        case 1:
        case 2:
            System.out.println("冬节");
            break;
        default:
            System.out.println("输入的月份有误");
            break;
        }
            
        //练习4:年月日
        //Scanner input = new Scanner(System.in);
        System.out.print("请输入年月日:");
        int year = input.nextInt();
        int month = input.nextInt();
        int day = input.nextInt();
        int sumdays = 0;
        switch(month){
        case 12:
            sumdays += 30;
        case 11:
            sumdays += 31;
        case 10:
            sumdays += 30;
        case 9:
            sumdays += 31;
        case 8:
            sumdays += 31;
        case 7:
            sumdays += 30;
        case 6:
            sumdays += 31;
        case 5:
            sumdays += 30;
        case 4:
            sumdays += 31;
        case 3:
            if((year % 4 == 0 && year % 100 != 0)||(year % 400 == 0)){
                sumdays += 29;
            }
            else{
                sumdays += 28;
                }
        case 2:
            sumdays += 31;
        case 1:
            sumdays += day; 
        }
        System.out.println(year+"年"+month+"月"+day+"日是当年的第"+sumdays+"天");
        
    }
}  

循环结构

  • 初始化部分
  • 循环条件部分
  • 循环体部分
  • 迭代部分
  • for循环和while循环可以相互装换
  • do-while较少使用
  • whlie(true)和for(;;)是无限循环

for

 package com.shangguigu.java;

import java.util.Scanner;

public class forxunhuan {
    public static void main(String[] args){
        
        //练习1
        for(int i = 1;i <= 5;i++){
            System.out.println("Hello World!");
        }
        
        //练习2:遍历输出100以内所有的偶数,变输出个数和总和
        int sum = 0;
        int count = 0;  
        for(int i = 1;i <= 100;i++){
            if(i % 2 == 0){
                System.out.println(i);
                count ++;
                sum += i;
            }
        }
        System.out.println("个数为:"+count);
        System.out.println("总数为:"+sum);
        
        //练习3:
        for(int i = 1;i <= 150;i++){
            //for(j = 3;j <= 7;j += 2){}
            System.out.print(i);
            if(i % 3 == 0){
                System.out.print(" foo");
            }
            if(i % 5 == 0){
                System.out.print(" bin");
            }
            if(i % 7 == 0){
                System.out.print(" baz");
            }
            System.out.println();
            }
        
        //练习4:最大公约数、最小公倍数
        Scanner input = new Scanner(System.in);
        System.out.print("请输入两个整数:");
        int m = input.nextInt();
        int n = input.nextInt();
        //求最大公约数
        for(int i = m;i >= 1;i--){
            if(m % i == 0 && n % i == 0){
                System.out.println(m+"和"+n+"的最大公约数是:"+i);   
                break;
            }
        }
        //求最小公倍数
        for(int j = m;j <= m*n;j++){
            if(j % m == 0 && j % n == 0){
                System.out.println(m+"和"+n+"的最小公倍数是:"+j);
                break;              
            }
        }
        
        //练习5:1~100之间奇数的和
        
        //练习6:1~100之间7的倍数的个数及总和
        
        //练习7输出水仙花数
        for(int i = 100;i <= 999;i++){
            if((Math.pow((i / 100),3) + Math.pow((i % 100 / 10),3) + Math.pow((i % 10),3)) == i){
                System.out.println(i);
            }       
        }   
            
    }           
}  

whlie

 package com.shangguigu.java;

import java.util.Scanner;

public class whilewhile {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
                    
        //练习题键盘读入不确定的整数,判断读入的整数和负数的个数,输入为0是程序结束
        int zhengshu = 0;
        int fushu = 0;
        while(true){
        //for(;;){
            System.out.print("请输入一个整数:");
            int value = input.nextInt();
            if(value > 0)
                zhengshu++;
            else if(value < 0)
                fushu++;
            else
                break;
        }
        System.out.println("输入的正数个数为:"+zhengshu);
        System.out.println("输入的负数个数为:"+fushu);
        
            
        //九九乘法表
        //for
        for(int x = 1;x <= 9;x++){
            for(int y =1;y <= x;y++ ){
                    System.out.print(y+"*"+x+"="+y*x+" ");
            }
            System.out.println();
        }
        
        //while
        int i = 1;
        while(i <= 9){
            int j = 1;
            while(j <= i){
                System.out.print(j+"*"+i+"="+j*i+" ");
                j++;
            }
            i++;
            System.out.println();
        
        
        //100以内的质数
        //方法一
        long start = System.currentTimeMillis();
        for(int m = 2;m <= 10000;m++){
            int num1 = 0;
            for(int n = 1;n <= m;n++){
                if(m % n == 0)
                    num1++; 
            }
            if (num1 <= 2)
                System.out.println(m);
        }
        long end = System.currentTimeMillis();
        System.out.println("所花费的时间为:"+(end - start));
        //方法二
        long start = System.currentTimeMillis();
        for(int m = 2;m <= 100000;m++){
            boolean isflag = true;
            for(int n = 2;n <= Math.sqrt(m);n++){//优化2 Math.sqrt(m) 优化较少遍历次数
                if(m % n == 0)
                    isflag = false;
                    break;//优化1
            }
            if (isflag == true)
                System.out.println(m);
        }
        long end = System.currentTimeMillis();
        System.out.println("所花费的时间为:"+(end - start));
        //方法三  
        long start = System.currentTimeMillis();
        lable1:for(int m = 2;m <= 100;m++){
                   for(int n = 2;n <= Math.sqrt(m);n++){//优化2 Math.sqrt(m) 优化较少遍历次数
                        if(m % n == 0)
                            continue lable1;
                    }
                    System.out.println(m);
            }
        
        long end = System.currentTimeMillis();
        System.out.println("所花费的时间为:"+(end - start));
    }
}
  

do while

 package com.shangguigu.java;

import java.util.Scanner;

public class whilewhile {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        
        //练习 for、while、do-while的区别
        System.out.print("请输入一个整数:");
        int num = input.nextInt();
        int i = 1;
        int sum = 0;
        
        //for 循环条件是局部变量
        for(int j = 1;j<= num;j++){
            sum += j;
        }
        System.out.println(sum);//55
        
        //while 先判断,再执行。循环条件是全局变量
        while(i <= num){
            sum += i;
            i++;
        }
        System.out.println(sum);//110
        
        //do while 先执行 再判断。循环条件是全局变量
        do{
            sum += i;
            i ++;
        }while(i <= num);
            System.out.println(sum);//121
    }
}
  

break、continue、return

  • break用于循环语句和switch case语句中,表示终止本层循环,后面的不执行
  • continue用于循环语句中,表示终止本次循环,继续下一次
  • return结束当前方法,后续再讲
 package com.shangguigu.java;

import java.util.Scanner;

public class test{
    public static void main(String[] args){
        //for和while
        for(int i = 1;i < 10;i++){
            if(i % 4 == 0)
                //break;//123
                continue;//1235679
                System.out.print(i);
        }
        System.out.println();
        
        //带标签的for和while
        lable1:for(int i = 1;i < 4;i++){
            for(int j =1;j < 10;j++){
                if (j % 4 == 0)
                    //break lable1;//123     终止内层循环的同时也直接终止了外层的循环
                    continue lable1;//123123123 终止了内层循环,跳出内层循环继续执行外层循环
                    System.out.print(j);                    
            }
            System.out.println();//此时的换行不生效
        }
        
    }
}     

文章来源:智云一二三科技

文章标题:Java基本语法

文章地址:https://www.zhihuclub.com/169877.shtml

关于作者: 智云科技

热门文章

网站地图