美文网首页
#JAVA# MOOC学习笔记 数据运算,循环案例,数组

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

作者: LeeMin_Z | 来源:发表于2018-07-01 21:11 被阅读8次

    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

    相关文章

      网友评论

          本文标题:#JAVA# MOOC学习笔记 数据运算,循环案例,数组

          本文链接:https://www.haomeiwen.com/subject/jpikyftx.html