#JAVA# MOOC学习笔记 数据运算,循环案例,数组

2018-07-01  本文已影响8人  LeeMin_Z

1. Java基本数据类型

1.1. 逻辑型

boolean类型适于逻辑运算,一般用于程序流程控制
boolean类型数据只允许取值true或false
不可以0或非0的整数替代true和false

1.2. 字符型

char型数据用来表示通常意义上“字符”
字符常量是用单引号括起来的单个字符
char c = 'A'; //而字符串String 则需要双引号

Java字符采用Unicode编码,每个字符占两个字节,
可用十六进制编码形式表示
char c1 = '\u0061';

Java语言中还允许使用转义字符''来将其后的字符转变为其它的含义
char c2 = '\n'; //代表换行符new line

1.3. 整数类型

跟C语言几乎一致,切java8官方文档有详细小代码进行测试。

Java各整数类型有固定的表数范围和字段长度,而不受具体操作系统的影响,以保证Java程序的可移植性

Java中没有“无符号数”
可以用long来处理无符号整数(uint)

逻辑运算符
!逻辑非
& 逻辑与
| 逻辑或
^ 逻辑异或
&& 短路与
|| 短路或

&& 第一个操作数为假则不判断第二个操作数
|| 第一个操作数为真则不判断第二个操作数

•左移
"a<<b; "将二进制形式的a逐位左移b位,最低位空出的b位补0;
•带符号右移
"a>>b; "将二进制形式的a逐位右移b位,最高位空出的b位补原来的符号位;
•无符号右移
"a>>>b;"将二进制形式的a逐位右移b位,最高位空出的b位补0。

•移位运算符应用举例


bitchange.png

2. 循环案例

  1. 求100-200以内的质数

主要就是注意需要两个循环,
外循环是被除数divisor,步长是2;
内循环是除数dividend,非质数时进行下一个外循环。

class PrimeNumber {
    public static void main(String[] args) {

        outer:
            for(int divisor  = 101;divisor  < 200; divisor +=2){
                for(int dividend  =2; dividend  < divisor;dividend ++){
                    if(divisor % dividend  == 0) continue outer;
                }
                System.out.println(" "+ divisor );
            }
    }
}

3. 数组

  1. 数组定义与为数组元素分配空间分开进行

int[] a = new int[3];
a[0] = 3;
a[1] = 9;
a[2] = 8;

  1. Java语言中声明数组时不能指定其长度(数组中元素的个数),例如:
    •int a[5]; //非法

  2. 数组是引用类型
    int[ ] a = new int[5];
    这里a 只是一个引用

  3. 静态初始化:
    在定义数组的同时就为数组元素分配空间并赋值。
    int[] a = { 3, 9, 8};

  4. 数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化。例如:
    ( 数值类型是0,引用类型是null )

//input
class test{
    public static void main( String args[] ){
        int[] a = new int[5];
        for(int index = 0; index < a.length;index++)
            System.out.println(a[0]);
    }
}

//output
0
0
0
0
0
//可以写成只读的for遍历循环
class test{
    public static void main( String args[] ){
        int[] a = new int[5];
        for(int value : a)
            System.out.println(value);
    }
}
  1. 在1-36中随机挑选7个数字。

a. 考虑生成随机数,Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围是[0.0,1.0)的左闭右开区间。
b. 所以要生成1~36的随机数x,需要考虑将其扩大36倍且加1,加1用于向下取整。 x = (int) (Math.Random() * 36 + 1)
c. 不选重复的随机数,需要一个for循环做对比;还需要while不断给oneNum赋值,因为当值相同时需要重新赋值。

//没查重就会发生错误
class Rnd36Pick7 {
    public static void main(String[] args) {
        int[] results =  new int[7];

        for(int i=0 ; i<7 ; i++){
            results[i] = (int)(Math.random() * 36 + 1);
            System.out.println(results[i]);
        }
    }
}
//correct code 
class rndTest {

    public static void main(String[] args) {
        int[] results = new int[7];


        for(int i=0 ; i < results.length;i++){
            oneNum:
            while (true){
                results[i] = (int)(Math.random() * 36 + 1);
                for(int j= 0;j <i;j++){
                    if(results[i]==results[j]) continue oneNum;
                }
                break ;
            }
        }
        for(int val : results) System.out.println(val);


    }

}

待做

如何下载包,引入包,还有图形界面还在学...


2018.6.27

上一篇下一篇

猜你喜欢

热点阅读