大数据学习2019.03.13

Java SE 基础语法

Tips for loops

  • 如果有固定次数,用for;
  • 如果必须执行一次,用do...while;
  • 其他情况用while。

复合赋值运算符

a = a + 6 a += 6
a = a - 6 a -= 6
a = a * 6 a *= 6
a = a / 6 a /= 6
a++,++a a = a + 1
a--,--a a = a-1

 

package test01;

public class Test19 {

    public static void main(String[] args) {
        int a = 10, b;
        b = a++;
        System.out.println("a=" + a + "," + "b=" + b);
        a = 10;
        b = ++a;
        System.out.println("a=" + a + "," + "b=" + b);
        a = 10;
        b = a--;
        System.out.println("a=" + a + "," + "b=" + b);
        a = 10;
        b = --a;
        System.out.println("a=" + a + "," + "b=" + b);

    }

}
//运行结果为:
//a=11,b=10
//a=11,b=11
//a=9,b=10
//a=9,b=9
View Code

循环控制

1.求素数

 

package test01;

import java.util.Scanner;

public class Test20 {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int isPrime = 1;
        for (int i = 2; i < n; i++) {
            if (n % i == 0) {
                isPrime = 0;
                break;
            }
        }
        if (isPrime == 1) {
            System.out.println(n + "是素数。");
        } else {
            System.out.println(n + "不是素数。");
        }
    }
}

 

break vs continue

  • break:跳出循环;
  • continue:跳过当前循环,进入下一次循环。

循环嵌套(多重循环)

如何写程序输出100以内的素数?

package test01;

public class Test21 {

    public static void main(String[] args) {

        for (int n = 2; n < 100; n++) {
            int isPrime = 1;
            for (int i = 2; i < n; i++) {
                if (n % i == 0) {
                    isPrime = 0;
                    break;
                }
            }
            if (isPrime == 1) {
                System.out.print(n + " ");
            }

        }

    }

}
//程序的运行结果为:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 //53 59 61 67 71 73 79 83 89 97
View Code

如何写程序输出前50个素数?

package test01;

public class Test22 {

    public static void main(String[] args) {
        int count = 0;
        int n = 2;
        while (count < 50) {
            int isPrime = 1;
            for (int i = 2; i < n; i++) {
                if (n % i == 0) {
                    isPrime = 0;
                    break;
                }
            }
            if (isPrime == 1) {
                System.out.print(n + " ");
                count++;
            }
            n++;
        }

    }

}
View Code

如何使用一个break跳出多重循环?

在循环前可以放一个标号来标示循环:

label:

带标号的break和continue对那个循环起作用。

 

public class Test02{

    public static void main(String[] args){
        OUT:
        for(int i = 1;i<=5;i++){
            for(int j = 1;j<=3;j++){
                //System.out.println("("+i+","+j+")");
                if(i == 2){
                    break OUT;
                }
                System.out.println("("+i+","+j+")");
            }
        }    
    }
}

 

 

 

逻辑类型

逻辑运算是对逻辑量进行的运算,只有逻辑量可以参与运算。

运算符 描述 实例 结果
逻辑非 !a 如果a是true,结果就是false,如果a是false,结果就是true。
&& 短路与 a && b 如果a,b都是true,结果就是true,否则就是false。
|| 短路或 a || b 如果a和b有一个是true,结果为true;两个都为false,结果为false。

优先级:!>&&>||

求最大公约数

 

package test01;

import java.util.Scanner;

public class Test23 {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int a = in.nextInt();
        int b = in.nextInt();
        int min = a > b ? a : b;
        int res = 1;
        for (int i = 2; i < min; i++) {
            if (a % i == 0 && b % i == 0) {
                res = i;
            }
        }
        if (res != 1) {
            System.out.println(a + "和" + b + "的最大公约数为:" + res);
        } else {
            System.out.println(a + "和" + b + "的最大公约数为1");
        }

    }

}
View Code

 

方法二:辗转相除法

 

package test01;

import java.util.Scanner;

public class Test23 {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int a = in.nextInt();
        int b = in.nextInt();
        int res = 0;
        int oa = a;
        int ob = b;
        while(b!=0) {
            res = a%b;
            a = b;
            b = res;
        }
        System.out.println(oa+"和"+ob+"的最大公约数是"+a);
    }

}
View Code

 

Java数组

创建数组

数组

是一种容器,特点是:

  • 其中的元素具有相同的数据类型;
  • 一旦创建,不能改变大小。

定义数组变量

<类型>[] <名字> = new <类型>[元素个数]

int[] grades = new int[100];
double[] averages = new double[20];
  • 元素的个数必须是整数;
  • 元素的个数必须给出;
  • 元素个数可以是变量;

直接初始化数组

 

int[] scores = {87,95,65,87,88,87,86};

 

  • 直接用大括号给出数组的所有元素的初始值
  • 不需要给出数组的大小,编译器替你数

数组变量赋值

  • 数组变量是数组的管理者而非数组本身;
  • 数组必须创建出来然后交给数组变量来管理;
  • 数组变量之间的赋值是管理权限的赋予;
  • 数组变量之间的比较是判断是否管理同一个数组。

 

 

复制数组

必须遍历数组将每一个元素逐一拷贝给目的数组。

 

posted on 2019-03-13 23:32  野犬  阅读(228)  评论(0编辑  收藏  举报