Java 学习第一周总结

2016-12-05  本文已影响0人  窒息笑

计算机的一些基本常识

数据单位

在计算中表示数据的最小单位是比特 - bit - 一个0或者一个1

  1. 字节(Byte) = 8比特(bit)
  2. 千字节(KB) = 1024B
  3. 兆字节(MB) = 1024KB
  4. 吉字节(GB) = 1024MB
  5. 太字节(TB) = 1024GB
    // 100Mbps ---> 12.5MBps
    // 1km ---> 1000m ---> 10^3
    // 1KB ---> 1024B ---> 2^10

关于二进制的拓展

// 123 = 1 * 10^2 + 2 * 10 ^ 1 + 3 * 10 ^ 0
// 一个字节
// 00000000
// 00000001
// 内存中的-2
// 10000010 - 原码
// 11111101 - 反码
// 11111110 - 补码
// 内存中的127
// 01111111 = 2^6 + 2^5 + 2^4 + 2^3 + 2^2 + 2^1 + 2^0 = 2^7 - 1
// 01111111 11111111 = 2^15 - 1
// 01111111 11111111 11111111 11111111 = 2^31 - 1
01111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 = 2^63 - 1

变量和常量

    // 关键字 - 在程序中有特殊含义的单词 - keyword
    //  表示类型的关键字:
    //      - byte(1) / short(2) / int(4) / long(8) 
    //      - float(4) / double(8)
    //      - char(2)
    //      - boolean(1bit) true(真) / false(假)
    // 标识符 - 给变量、常量、方法、类、接口等起的名字就叫标识符 - identifier
    // 标识符命名规则 :
    //      1. 字母(Unicode字符)、数字、下划线和$, 数字不能开头
    //      2. 大小写敏感(区分大小写)
    //      3. 不能使用关键字作标识符
    //      4. 见名知意
    //      5.  驼峰命名法
    //          - 命名类、接口、枚举、注解:每个单词首字母大写
    //          - 命名变量、方法:第一个单词全小写从第二个单词开始每个单词首字母大写
    //          - 命名常量用全大写,多个单词用下划线分隔
    // 运算符 - operator
    //      - 赋值运算符 =、+=、-=、*=、/=、%=、……
    //      - 算术运算符 +、-、*、/、%
    //      - 比较运算符 >、<、>=、<=、==、!= - 结果一定是布尔值
    //      - 逻辑运算符 &(逻辑与运算)、|(逻辑或运算)
    //      - 短路运算符 &&(短路与运算-而且)、||(短路或运算-或者)
    // 字面量(直接量) - literal
    //      - 整数字面量: 123 0x123 0123 0b101 10L
    //      - 小数字面量: 1.23F 1.23 1.23e2 1.23e-2
    //      - 字符字面量: 'a' 'A' '昊' '\n' '\'' '\123'
    //      - 布尔字面量: true false
    //      - 字符串字面量: "hello"
    //      - 引用字面量: null
    //      - 类型字面量: String.class int.class
    // 分隔符 - separator
    //      - ; , { } ( ) [ ] : 空格

基础的程序

        System.out.println(int.class);
        System.out.println(String.class);
        
        int x =3, y = 5, z = 3;
        // System.out.println(x > y);       // false
        // System.out.println(x != y);      // true
        // System.out.println(x == y);      // false
        // System.out.println(x >= z);      // true
        
        System.out.println(x > y && y > z);     // false
        System.out.println(x > y || y > z);     // true
        
        // final int CAPACITY_OF_ROOM = 120;
        // int ageOfStudent;

        // double A = 100.1;
        int a = 10;
        a += 20;    // a = a + 20;
        a *= 5;     // a = a * 5;
        a *= a + 2; // a = a * (a + 2);
        System.out.println(a);
        // int 1a = 1000;
        // int public = 12;
        // double static = 3.5;
        
        int a1 = 101;           // 十进制
        int a2 = 0101;          // 八进制
        int a3 = 0x101;         // 十六进制
        int a4 = 0b101;         // 二进制  Java 7+
        long a5 = 12345678L;    // 长整数
        int a6 = 12_345_678;    // Java 7+
        System.out.println(a1);
        System.out.println(a2);
        System.out.println(a3);
        System.out.println(a4);
        System.out.println(a5);
        System.out.println(a6);
        
        float b1 = 1.23F;       // 单倍精度浮点数
        double b2 = 1.23;       // 双倍精度浮点数
        double b3 = 123.456;
        // 科学计数法
        double b4 = 1.23456e2;
        double b5 = 1.23456e-2;
        System.out.println(b1);
        System.out.println(b2);
        System.out.println(b3);
        System.out.println(b4);
        System.out.println(b5);
        
        System.out.println(Byte.MIN_VALUE + "~" + Byte.MAX_VALUE);
        System.out.println(Short.MIN_VALUE + "~" + Short.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE + "~" + Integer.MAX_VALUE);
        System.out.println(Long.MIN_VALUE + "~" + Long.MAX_VALUE);
        System.out.println(Float.MIN_VALUE + "~" + Float.MAX_VALUE);
        System.out.println(Double.MIN_VALUE + "~" + Double.MAX_VALUE);
        
        char $x = 'A';
        char $y = '昊';
        // String name = "王大锤";
        System.out.println($x);
        System.out.println((int) $x);
        System.out.println($y);
        System.out.println((int) $y);
        System.out.println((char) 26115);
        
        boolean z0 = true;
        boolean z1 = false;
        System.out.println(z0);
        System.out.println(z1);
    }

}

练习

  1. 个人所得税算法
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner input = new Scanner(System.in);
        System.out.println("请输入你的五险一金");
        double insurance = input.nextDouble();
        System.out.println("请输入你的工资");
        double salary = input.nextDouble();
        double t = salary - 3500 - insurance;
        double x =0;
        double z = 0;
        
        if (t < 0) {
            System.out.println("你不需要缴纳个人所得税");
        } else if (t <= 1500) {
            z = 0.03;
            x = 0;
        } else if (t <= 4500) {
            z = 0.1;
            x = 105;
        } else if (t <= 9000) {
            z = 0.2;
            x = 555;
        } else if (t <= 35000) {
            z = 0.25;
            x = 1005;
        } else if (t <= 55000) {
            z = 0.3;
            x = 2755;
        } else if (t <= 80000) {
            z = 0.35;
            x = 5505;
        } else {
            z = 0.45;
            x = 13505;
        }
        double tax = t * z - x;
        System.out.printf("你需要缴纳的个人所得税为:%.2f元\n" , tax);
        System.out.printf("本月实发工资为:%.2f元\n",(salary-tax-insurance));
        input.close();
    }
  1. 输入x年x月,判断这个月有多少天
import java.util.Scanner;
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个月份");
        if (input.hasNextInt()) {
            int month = input.nextInt();
            if (month == 1 || month == 3 || month == 5 || month == 7 || 
                    month == 8 || month == 10 || month == 12) {
                System.out.println("这个月有" + 31 + "天");
                
                }
            else if (month == 4 || month == 6 || month == 9 || month == 11) {
                    System.out.println("这个月有" + 30 + "天");
            }
            if (month == 2) {
                System.out.println("请输入一个年份");
                int year =input.nextInt();
                if ((year % 4 == 0 && year % 100 != 0) 
                    || year % 400 == 0) {
                    System.out.println("这个月有" + 29 + "天");
                }
                else {
                    System.out.println("这个月有" + 28 + "天");
                }
                
            }
        
        } else {
            System.out.println("这里需要一个整数!!");
        }
        // System.out.println("请输入一个年份");

        input.close();
    }
  1. 三角形成立的条件和周长面积
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入三条边长");
        double a = input.nextDouble();
        double b = input.nextDouble();
        double c = input.nextDouble();
        boolean isvalid = (a + b) > c && (a + c) > b && (b + c) > a;
        if (a > 0 && b > 0 && c > 0 && isvalid) {
            double p = a + b + c;
            double S = Math.sqrt(p / 2 * (p / 2 - a) * (p / 2 - b) * (p / 2 - c));
            System.out.printf("三角形的周长是:%.2f\n", p);
            System.out.printf("三角形的面积是:%.2f\n", S);
        } else {
            System.out.println("不能构成三角形!");
        }
        input.close();
    }

4.分段函数

public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入x=");
        double x = input.nextDouble();
        double y;
        if (x < -1) {
            y = 3 * x + 5;
        } else if (x <= 1) {
            y = x - 1;
        } else {
            y = 5 * x - 3;

        }
        System.out.println("y =" + y);
        input.close();
    }

5.润年的判断

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
        // int a = input.nextInt();
        // int b = input.nextInt();
        // System.out.println(a>b?a:b);
        System.out.println("请输入一个年份");
        //分支结构(选择结构) - 可以让程序有多条执行路径
        if (input.hasNextInt()){
            int year = input.nextInt();
            boolean isLeapYear = (year % 4 == 0 && year % 100 != 0) 
                    || year % 400 == 0;
            System.out.println(year + "年" + 
                    (isLeapYear ? "是" : "不是") + "润年");
            input.close();
        }
        else {
            System.out.println("瓜兮兮的,这里需要一个整数!!");
        }
        // 注释:上题是判断是否是润年。
    }

6.Graps赌博游戏
游戏规则:
//-两颗筛子
//-第一次:
//玩家摇出 7或 11 玩家胜
// 2 3 或 12 庄家胜
// 其他点数 游戏继续
//玩家再摇
// 如果摇出了7点 庄家胜
// 如果摇出了第一次的点数 玩家胜
// 其他情况 游戏继续

public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        
        System.out.println("请按Enter开始游戏");
        String x = input.nextLine();
        int a =(int) (Math.random()*6+1);
        int b =(int) (Math.random()*6+1);
        int num = a + b;
        int n = 1;
        System.out.println("第1次你摇出了" + a + "和" + b );
        System.out.println("总计" + num + "点");
        if (num == 7 || num == 11){
            System.out.println("第1局玩家获胜");
        }
        else if (num == 2 || num == 3 || num == 12) {
            System.out.println("第1局庄家获胜");
        }
        else {
            while(true){
            System.out.println("现在平局,请按Enter继续");
            String y = input.nextLine();
            int c =(int) (Math.random()*6+1);
            int d =(int) (Math.random()*6+1);
            int newnum = c + d;
            n+=1;
            System.out.println("第" + n + "次你摇出了" + c + "和" + d );
            System.out.println("总计" + newnum + "点");
            if (newnum == 7){
            System.out.println("庄家获胜");
            break;
            }
            else if (newnum == num) {
                System.out.println("和第一轮总和相同,玩家获胜");
                break;
            }
        }
            }
        input.close();
    }

7.捕鱼问题:
n个人,第1个人先将鱼扔掉一只然后平分五份拿走其中一份,第2个人也将鱼扔掉一只然后平分五份拿走其中一份,以此类推,直到第n个人的时候也扔掉一只然后平分五份拿走其中一份,求这堆鱼至少有多少只。

public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入捕鱼的人数");
        int n = input.nextInt();
        
        
        for (int a = 1; a <= Integer.MAX_VALUE; a++) {
            int i = 1;
            int b = a;
            boolean x = true;
            while (i <= n && x) {
                if (b % n == 1) {
                    b = (n - 1) * (b - 1) / n;
                    i++;
                    x = true;
                } else {
                    i++;
                    x = false;
                }
            }
            if (x && i==(n+1)) {
                System.out.print(a);
                break;
            }
        }
        input.close();
    }
上一篇 下一篇

猜你喜欢

热点阅读