20145226夏艺华 《Java程序设计》第2周学习总结 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管截图 其他 学习进度条 参考资料

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);
    }
}

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

20145226夏艺华 《Java程序设计》第2周学习总结
教材学习内容总结
教材学习中的问题和解决过程
代码调试中的问题和解决过程
代码托管截图
其他
学习进度条
参考资料
Java的package和C语言的“库”比较类似,在这个地方我习惯性地没有添加分号,导致错误。
20145226夏艺华 《Java程序设计》第2周学习总结
教材学习内容总结
教材学习中的问题和解决过程
代码调试中的问题和解决过程
代码托管截图
其他
学习进度条
参考资料

20145226夏艺华 《Java程序设计》第2周学习总结
教材学习内容总结
教材学习中的问题和解决过程
代码调试中的问题和解决过程
代码托管截图
其他
学习进度条
参考资料
发现打印的结果和书上不一样,换不了行,仔细对照之后发现是println和printf的问题
20145226夏艺华 《Java程序设计》第2周学习总结
教材学习内容总结
教材学习中的问题和解决过程
代码调试中的问题和解决过程
代码托管截图
其他
学习进度条
参考资料

  • 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语言同理,可以补齐占位等。

代码托管截图

20145226夏艺华 《Java程序设计》第2周学习总结
教材学习内容总结
教材学习中的问题和解决过程
代码调试中的问题和解决过程
代码托管截图
其他
学习进度条
参考资料

其他

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

学习进度条

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

参考资料