【Java】从头开始的Java复健day4

用的书:《Java从入门到精通》

day1(3.1-3.3): 【Java】从头开始的Java复健day1

day2(3.4-3.8): 【Java】从头开始的Java复健day2

day3(4.1-4.4): 【Java】从头开始的Java复健day3

第四章 流程控制

4.5 小结 略

4.6 练习

题目写输出里了

public class Java_test4_6 {
    public static void main(String[] args){
        System.out.println("1.判断变量x是奇数还是偶数");
        int x = 5;
        if (x == 0){
            System.out.println("偶数");
        }
        else if (x%2 == 0){
            System.out.println("偶数");
        }
        else {
            System.out.println("奇数");
        }

        System.out.println("2.for打印菱形");
        int n = 5;
        /*
        思路
        菱形分为上半和下半 行数和中间一行的列数相等 一般只为奇数
        先设行数n=5
        上半部分截止到n/2行
        来看随着行数的增加
        因为中间一行的*数和行数一致
        故第一行空格数为n / 2且每行递减1
        第一行的*数为1后边为3 5等奇数
        故为当前行数*2再-1
        当使用i为行数计数 则每行的空格数递减的1加起来应为i-1

        后半部分其实就是把行计数器i倒过来就行了
        故开始就是n / 2 + 1之后每次减1
         */
        // 打印上半部分
        for (int i = 1; i <= n / 2; i++) {
            for (int j = 1; j <= n / 2 - i + 1; j++) {
                System.out.print(" ");
            }
            for (int k = 1; k <= 2 * i - 1; k++) {
                System.out.print("*");
            }
            System.out.println();
        }

        // 打印下半部分
        for (int i = n / 2 + 1 ; i >= 1; i--) {
            for (int j = 1; j <= n / 2 - i + 1; j++) {
                System.out.print(" ");
            }
            for (int k = 1; k <= 2 * i - 1; k++) {
                System.out.print("*");
            }
            System.out.println();
        }

        System.out.println("3.用while计算1+1/2!+1/3!+...+1/20!");
        int num = 1;
        double sum = 0;
        double tmp = 1;
        /*
        两个while有点冗余
        思路是一个变量记录分母的阶乘
        一个变量记录计算出的分式
        但是由于分母上也只是每次比前一个多乘一个所以完全可以写在一个while中
        while (num <= 20){
            int k = 1;
            double tmp = 1;
            while (k <= num){
                tmp = tmp * k;
                k++;
            }
            sum = sum + (1.0 / tmp);
            num++;
        }
        */
        while (num <= 20){
            tmp = tmp * num;
            sum = sum + (1.0 / tmp);
            num++;
        }
        System.out.println(sum);

    }
}

第五章 字符串

5.1 String类

声明字符串

字符串变量必须经过初始化才能使用(?怎么感觉是废话)

创建字符串

Java中将字符串作为对象来管理 因此可以像创建其他类对象一样来创建字符串

常用的构造方法

  • 用字符数组a创建
    String(char a[])
  • 提取字符数组a中的一部分创建一个字符串对象
    • offset表示开始截取字符串的位置
    • length表示截取字符的长度
      String(char a[], int offset, int length)
  • 分配一个新String对象 使其表示字符数组参数中所有元素连接的结果
    String(char[] value)

注意啊这里String(char a[])和String(char[] value)其实没什么区别在代码上

一般也都使用后一种

但是除以上的构造方法外最常用的还是直接赋值

String s = "string";

public class Java5_1 {
    public static void main(String[] args){
        // 构造方法
        // 1.String(char a[])
        char a[] = {'g', 'o', 'o', 'd'};
        String s = new String(a);
        // 等价于
        String s1 = new String("good");

        // 2.String(char a[], int offset, int length)
        char b[] = {'g', 'o', 'o', 'd'};
        String s2 = new String(b, 2, 1);
        // 等价于
        String s3 = new String("o");

        // 3.String(char[] value)
        String s5 = new String("good");

        // 此时s6和s7都引用相同的字符串常量 具有相同的实体 指向同一个内存
        String s6, s7;
        s6 = "string";
        s7 = "string";

    }
}

5.2 连接字符串

连接多个字符串

Java中一个字符串不能分两行写 如果要分两行需要使用+

连接其他数据类型

连接之后会都变成字符串 但是应当谨慎使用

public class Java5_2 {
    public static void main(String[] args){
        int booktime = 4;
        float practice = 2.5f;
        System.out.println("我每天花费" + booktime +
                "小时看书" + practice + "小时练习");
        // ()优先级高故先算两个时间和
        System.out.println("我每天花费" + booktime +
                "小时看书" + (practice + booktime) + "小时练习");
    }
}
posted @ 2023-08-10 23:05  ryukirin  阅读(5)  评论(0编辑  收藏  举报