20145318 《Java程序设计》第2周学习总结

教材学习内容总结

  • short,2字节;int,4字节;long,8字节;byte,1字节;float,4字节;double,8字节;char,2字节;boolean只有true和false。
  • 基本类型:整型(short、int、long) 、字节(byte) 、浮点型(float、double) 、字符(char)、布尔(boolean,只有true和false,且不能与其他类型运算)。
  • 常量:整数可以用二进制(b),八进制(o)、十进制、十六进制(x)。
  • 小数默认为double型,只有其后加f或F才是浮点型,double型精度更高。
  • 类型转换:如果表达式中包括不同类型,则以精度最高的类型计算;可强制转换,如sqrt的类型是double型,如果要直接引用即将int强制转换为double型。
  • break 可以离开当前for、switch、while等循环语句,并执行循环外下一个语句。
  • continue 用于循环语句中,不执行其后的语句,回到循环开始进行下一次循环,不离开循环。
  • 除算术运算符、赋值运算符、比较运算符、逻辑运算符之前常用外,位运算符包括<<、>>、>>>、&、|、^、~,只能对二进制运算,有时用位运算符能简化程序,但是可读性不高,推荐学习但是实际编程不推荐。
  • goto可以用break/continue代替,之前用goto语句用的很顺手,但是实际编程中不建议使用goto,在此总结一下goto语句的优缺点。优点:可以快速的跳出多重循环,方便的去到我所想要执行的语句处。缺点:虽然可以用goto代替ifelse等语句,但是它会使程序搅在一起,像一团乱了的毛线球,不容易阅读,也就是所谓的破坏语言的结构性。总结来说,goto语句一般不用,尽量少用,特别是对于初学者,goto可能会在某些方面简化程序,但是终究不是正解。

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

打印九九乘法表

/*
需求:打印九九乘法表如下。
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 思路:正三角形状可用改变for循环中间的表达式实现,注意到每一行前面的乘数依次增加,后数不变,可用for循环嵌套实现。
针对得数位数不同,可用制表符\t使格式整齐。两数之积直接用y*x表示。
*/
class MultiplicationTable
{
public static void main(String[] args)
{
int x,y;
for(x=1;x<=9;x++)
{
for(y=1;y<=x;y++)
{ //两种方法都可以打印,注意printf和print的区别
System.out.printf("%d*%d=%d\t",y,x,y*x); /* 此处用print不行。若不用"%d\t",可以用"%2d " */
//System.out.print(y+"*"+x+"="+y*x+"\t"); //制表符:\t,使每列对齐。
}
System.out.println();
}
}
}

冒泡排序

 /*
需求:冒泡排序。
思路:冒泡排序即第一个元素与第二个元素进行比较,大者向后移动,第二个元素与第三个元素比较,大者向后移动,一轮比较完成时,最大的元素就在最后面,
此时开始第二轮比较,同样是第一个与第二个比较,但是此时最后一个元素已经不需要比较了,依次类推,最后一轮第一个元素和第二个元素比较完成即排序完成。
交换数值:新定义函数
*/ class BubbleSort
{
public static void main(String[] args)
{
int[] arr={4,2,9,6,8,3,1,5,7};
printArray(arr);
bubbleSort(arr);
printArray(arr);
}
public static void bubbleSort(int[] arr)
{
for(int i=0;i<arr.length;i++)
for(int j=0;j<arr.length-i-1;j++)
//注意:-i是因为依次比较i次后后面的i个数已经确定,不需要再比较;
//-1是因为避免下一行arr[j+1]越界。
if(arr[j]>arr[j+1])//注意比较的是相邻两元素。
{
sort(arr,j,j+1);
}
}
public static void printArray(int[] arr)//注意两个函数包含在一个类中
{
System.out.printf("[");//先打印一个[
for(int i=0;i<arr.length;i++)//数组名.length表示数组长度
{
if(i<arr.length-1)
System.out.printf("%d,",arr[i]);//若非最后一个元素,打印"%d,"
else
System.out.printf("%d]",arr[i]);//若是最后一个元素,打印"%d]"
}
System.out.printf("\n");//最后在循环外换行
}
public static void sort(int[] arr,int a,int b)
//int 三个系数,一个数组两个代表数组的标号,不能直接int 两个数
{
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}
}

结果

代码托管

其他(感悟、思考等,可选)

  • 初学者学习Java这样的操作性课程需要大量的练习,只有在编写代码的过程中才有所提高,但是我不提倡遇到问题遇到错误就去问同学问老师,我认为更好的解决办法是自己查错和百度,经过努力的纠错过程才会印象更加深刻,特别是针对稍微复杂一点的循环嵌套,有很多需要注意的细节,比如<=和<,都需要考虑清楚。

  • 另外写注释的习惯也要逐步培养,养每段代码class前有需求和思路分析,代码中复杂的部分或者复习时需要注意的部分应该有所标记。

  • 之后会尝试IDEA进行编写。

  • 针对老师提出的问题应该尽快有回复或者改正。

学习进度条

参考资料

《Java程序设计》 第2周学习总结的更多相关文章

  1. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  2. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  3. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  4. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  5. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  6. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  7. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  8. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  9. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  10. 《Java程序设计》第二周学习总结

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

随机推荐

  1. Angular2+学习第1篇 简介

    历史: Angular是Google推出的Web前端开发框架,从12年发布起就受到了强烈的关注,他首次提出了双向绑定的概念,让人耳目一新. Angular 2特性 就在2016年9月中旬,时隔4年,G ...

  2. HDU 5667 Sequence(矩阵快速幂)

    Problem Description Holion August will eat every thing he has found. Now there are many foods,but he ...

  3. 跟着包子学 css (一)

    1.在每次 写css之前 都应该先将浏览器的默认 样式 给清除掉 *{padding:0; margin:0;} h1,h2,h3,h4,h5,h6{font-weight:normal; font- ...

  4. NSUserDefault 保存自定义对象

    由于NSUserDefaults 不支持保存自定类,保存的对象需要实现NSCoding协议,不过自定的类型就算实现了NSCoding也不可以保存,可以通过以下方法实现: //h文件 #import & ...

  5. c#使用FastReports打印

    private void btnprint_Click(object sender, EventArgs e) { //报表路径 string path = Application.StartupPa ...

  6. Arcengine 二次开发得到点shapefile的坐标

    做二次开发的时候,想要得到Point shapfile的坐标和相应的属性,也就是Point 的(x,y)和某个属性,在网上查了一些资料,做总结如下 首先,你要确定自己要操作的图层,一般来说,得到当前操 ...

  7. Oracle Java Mission Control MBean 服务器 飞行记录器

    Oracle Java Mission ControlMBean 服务器飞行记录器

  8. Android技巧小结之新旧版本Notification

    最近开发用到了通知功能,但有几个地方老是提示deprecated,然后就找了篇文章学习了下新旧版本的不同. Notification即通知,用于在通知栏显示提示信息. 在较新的版本中(API leve ...

  9. Linux命令(基础2)

    1.命令概要介绍: 查看目录内容:ls 切换目录命令:cd 创建与删除目录:touch(创建文件).rm(移除文件与目录).mkdir(创建目录) 拷贝与移动命令:cp(拷贝).mv(移动) 查看文件 ...

  10. 从CPU/OS到虚拟机和云计算

      从CPU/OS到虚拟机和云计算  作者:张冬            关于软硬件谁为主导这个话题,套用一句谚语就是三十年河东三十年河西.风水轮流转.软件和硬件一定是相互促进.相互拆台又相互搭台的. ...