zoukankan      html  css  js  c++  java
  • 20145226夏艺华 《Java程序设计》第2周学习总结

    教材学习内容总结

    学习目标

    了解Java编程风格
    认识Java的类型与变量
    掌握Java流程控制的方法(分支、循环)

    教材第三章内容总结

    • 认识类型与变量
    • 学习运算符的基本使用
    • 了解类型转换细节
    • 运用基本流程语法

    第三章的主要内容就是Java基本语法,可以运用分支、循环等写一点自己的小程序了。
    不论是Java的类型(整数、字符、字节、浮点数等)还是格式控制符、运算符、条件语句和循环语句的运用方式,Java的语法和C有太多相似的地方,所以有很熟悉的感觉。
    以下是对于类型、运算符和条件式的总结:

    类型

    字节:byte类型,一般在需要逐字节处理数据的时候使用;
    整数:分为short整数(占2字节)、int整数(占4字节)、long整数(占8字节);
    浮点数:分为float、double浮点数,double的精确度大于float(与C语言相同);
    字符:char类型,每个字符占两个字节。

    运算符

    算术运算:普通的加减乘除运算,在此不多列举;
    比较运算与条件运算:大于小于等运算;
    逻辑运算:与运算(&&)、或运算(||)、非运算(!);
    位运算:&、|、^、~。- 递增递减运算:++、--;
    指定运算:很少用的类型(例:+=、-=)。

    类型转换

    自动提升类型;
    强制转换类型。

    流程控制

    if-else条件式(判断语句);
    switch条件式(选择语句);
    for循环(循环语句);
    while循环(循环语句);
    break、continue(其他)

    教材学习中的问题和解决过程

    照着教材55页敲了一遍代码,对于其中的各种类型的范围有了深入的理解。

    /**
     * Created by XiaYihua on 2017/1/23.
     */
    
    package cc.openhome
    
    public class Range {
        public static void main(String args[]){
            //byte、short、int、long范围
            System.out.printf("%d~%d%n",Byte.MIN_VALUE,Byte.MAX_VALUE);
            System.out.printf("%d~%d%n",Short.MIN_VALUE,Short.MAX_VALUE);
            System.out.printf("%d~%d%n",Integer.MIN_VALUE,Integer.MAX_VALUE);
            System.out.printf("%d~%d%n",Long.MIN_VALUE,Long.MAX_VALUE);
            //float、double精度、范围
            System.out.printf("%d~%d%n",Float.MIN_EXPONENT,Float.MAX_EXPONENT);
            System.out.printf("%d~%d%n",Double.MIN_EXPONENT,Double.MAX_EXPONENT);
            //char可表示的Unicode范围
            System.out.printf("%h~%h%n",Character.MIN_VALUE,Character.MAX_VALUE);
            //Boolean的两个值
            System.out.printf("%b~%b%n",Boolean.TRUE,Boolean.FALSE);
    
        }
    }
    

    教材62页的有关位运算的代码~加深了对于print、printf、println的区别的理解

    /**
     * Created by XiaYihua on 2017/1/23.
     */
    
    package cc.openhome;
    
    public class Bitwise {
        public static void main(String args[]){
            //AND
            System.out.println("AND运算:
    ");
            System.out.printf("0 and 0 %5d%n", 0 & 0);
            System.out.printf("0 and 1 %5d%n", 0 & 1);
            System.out.printf("1 and 0 %5d%n", 1 & 0);
            System.out.printf("1 and 1 %5d%n", 1 & 1);
            //OR
            System.out.println("
    OR运算:
    ");
            System.out.printf("0 or 0 %6d%n", 0 | 0);
            System.out.printf("0 or 1 %6d%n", 0 | 1);
            System.out.printf("1 or 0 %6d%n", 1 | 0);
            System.out.printf("1 or 1 %6d%n", 1 | 1);
            //XOR
            System.out.println("
    XOR运算:
    ");
            System.out.printf("0 xor 0 %5d%n", 0 ^ 0);
            System.out.printf("0 xor 1 %5d%n", 0 ^ 1);
            System.out.printf("1 xor 0 %5d%n", 1 ^ 0);
            System.out.printf("1 xor 1 %5d%n", 1 ^ 1);
    
        }
    }
    
    /**
     * Created by XiaYihua on 2017/1/24.
     */
    
    public class Comparison
    {
        public static void main(String[] args)
        {
            System.out.printf("10 > 5 结果 %b%n",10 > 5);
            System.out.printf("10 >= 5 结果 %b%n",10 >= 5);
            System.out.printf("10 < 5 结果 %b%n",10 < 5);
            System.out.printf("10 <= 5 结果 %b%n",10 <= 5);
            System.out.printf("10 == 5 结果 %b%n",10 == 5);
            System.out.printf("10 != 5 结果 %b%n",10 != 5);
        }
    }
    
    /**
     * Created by XiaYihua on 2017/1/24.
     */
    public class Level {
        public static void main(String[] args) {
            int score=88;
            int quotient=score/10;
            char level;
            switch(quotient) {
                case 10:
                case 9:
                    level = 'A';
                    break;
                case 8:
                    level = 'B';
                    break;
                case 7:
                    level = 'C';
                    break;
                case 6:
                    level = 'D';
                    break;
                default:
                    level = 'E';
            }
            System.out.printf("得分等级:%c%n",level);
        }
    }
    
    /**
     * Created by XiaYihua on 2017/1/24.
     */
        public class Level2 {
            public static void main(String[] args) {
                int score=88;
                char level;
                if(score>=90){
                    level ='A';
                }
                else if (score>=80&&score<90) {
                    level ='B';
                }
                else if(score>=70&&score<80){
                    level = 'C';
                }
                else if(score>=60&&score<70){
                    level ='D';
                }
                else{
                    level ='E';
                }
                System.out.printf("得分等级:%c%n",level);
            }
        }
    
    
    /**
     * Created by XiaYihua on 2017/1/24.
     */
    public class Shift
    {
        public static void main(String[] args)
        {
            int number=1;
            System.out.printf("2 的 0 次方: %d%n",number);
            System.out.printf("2 的 1 次方: %d%n",number << 1);
            System.out.printf("2 的 2 次方: %d%n",number << 2);
            System.out.printf("2 的 3 次方: %d%n",number << 3);
        }
    }
    

    代码调试中的问题和解决过程


    Java的package和C语言的“库”比较类似,在这个地方我习惯性地没有添加分号,导致错误。


    发现打印的结果和书上不一样,换不了行,仔细对照之后发现是println和printf的问题

    • println打印的时候自带了换行,下一次在打印的时候从下一行开始打印。
    • print就是一般的标准输出,但是不换行,下次打印的时候在这次打印的东西后面直接打印。
    • printf主要是继承了C语言的printf的一些特性,可以进行格式化输出
    • println和print基本没什么差别,就是最后会换行

    总结一下printprintlnprintf的区别
    print将它的参数显示在命令窗口,并将输出光标定位在所显示的最后一个字符之后。
    println 将它的参数显示在命令窗口,并在结尾加上换行符,将输出光标定位在下一行的开始。
    printf是格式化输出的形式。
    举个例子:

    package other;
    public class TestPrint {
    public static voidmain(String[] args) {
    int i = 4;
    double j = 5;
    System.out.print("用print输出i:"+ i);
    System.out.println( "用println输出i:"+ i);
    System.out.printf("i的值为%d,j的值为%f", i,j);
    }
    }
    

    运行结果为
    用print输出i:4用println输出i:4
    i的值为4,j的值为5.000000
    可以看到,用print输出i后,没有换行,用println输出的结果直接在print输出语句后面,而输出println后换行了,所以用printf输出时,在第二行输出。
    再来看printf
    “i的值为%d,j的值为%f”这个字符串中的"%d"变为i的值了,而"%f"变为了j的值了!这里,"%d"的意思是一个int值的占位符,"%f"为一个double 或float值的点位符,这个变量的参数在后面提供。>注意的是实参名必须按顺序排。不然就会错了。而且类型也要相符。如果我们把语句改为System.out.printf("i的值为%d,j的值为%f", j,i);//i和j位置反了这时就有错了因为"%d"对应的参数变为j,"%f"对应的变为i了,而j是double的,与"%d"是int形的不一致。所以有错了。还有"%s"是一个字符串值的点位符的意思。"%c"是一个字符值的点位符的意思。

    • 为什么j输出变成了5.000000?那是因为double是默认有6位小数的(这个可能和系统电脑有关,有的不是6位吧)但是如果只要输出两位小数?和c语言一样,改为 `System.out.printf("i的为%d,j的值为%.2f", i,j);`这里的"%.2f"的意思是输出两位小数点,如果想输出三位那就"%.3f"。
      

    printf有用在于可以控制输出的格式,和C语言同理,可以补齐占位等。

    代码托管截图

    其他

    换了新的电脑,虚拟机还是拖不了IDEA,Mac版和windows版配置还是有一些差别,所以我参照了一些CSDN上的博客进行配置。
    Mac配置JDK教程
    使用mac的同学可以参考一下这个~各个博客众说纷纭,其实mac版的idea已经内置了jdk,只需按照上述步骤设置一下就可以了。
    虽然走了好多弯路。。。但是真切地感受到了技术博客的优越性,慢慢精研技术之后希望有一天我也可以在CSDN上发表一些可以帮助别人的东西吧~

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第二周 300/400 1/3 12/52

    参考资料

  • 相关阅读:
    java实现遍历树形菜单方法——设计思路【含源代码】
    java实现动态验证码源代码——接受ajax的jsp
    java实现动态验证码源代码——接受ajax的jsp
    java实现动态验证码源代码——绘制验证码的jsp
    java实现动态验证码源代码——绘制验证码的jsp
    java实现动态验证码源代码——jsp页面
    java实现动态验证码源代码——jsp页面
    struts+hibernate+oracle+easyui实现lazyout组件的简单案例——struts.xml配置详情
    struts+hibernate+oracle+easyui实现lazyout组件的简单案例——struts.xml配置详情
    struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Action的实现类
  • 原文地址:https://www.cnblogs.com/bestixyh/p/6348005.html
Copyright © 2011-2022 走看看