Java 学习第一周总结

计算机的一些基本常识

数据单位

在计算中表示数据的最小单位是比特 - 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();
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容

  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    叶总韩阅读 5,129评论 0 41
  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    赵宇_阿特奇阅读 1,852评论 0 2
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,598评论 18 399
  • 运算符 1.赋值运算符 2.算数运算符 +-*/ 3.关系运算符 < <= > >= == != 4.逻辑运算符 ...
    迷茫o阅读 209评论 0 0
  • 托比林阅读 543评论 0 50