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

教材学习内容总结

本周学习教材第三章,本章主要讲述了java语言中的一些基础语法,java是个支持面向对象的程序语言,但在正式进入面向对象支持语法的探讨前,对于类型、变量、运算符、流程控制等,这些各种程序语言都会有的基本语法元素,还是要有一定的基础。虽然各种程序语言都有这些基本语法元素,但千万别因此而轻忽它们,因为各种程序语言都有其诞生的宗旨与演化过程,对这些基本语法元素,也就会有其独有的特性。

1. 类型

在java的世界中,并非每个东西都抽象化为对象,你还是要面对系统的一些特性。例如你还是要意会到内存长度有限的问题,所以程序执行时遇到123这个整数时,还是要想一下,用多少长度的内存来储存它比较经济。基本上,java可区分为基本类型和类类型两大类型系统,其中类类型也称为参考类型。

基本类型(每种类型都有其储存范围,如超出范围,即Overflow):

所谓基本类型,就是在使用时,得考虑一下数据用多少内存长度来存比较经济,利用程序语法告诉JVM,然后由JVM自动为你在内存中配置与管理。在java中的基本类型主要可以区分为整数、字节、浮点数、字符与布尔。

  1. 整数:可分为short整数(占2字节),int整数(占4字节),long整数(占8字节)三种,不同长度的整数,可储存的整数范围也不同。long整数占的内存长度比int整数来得多,可表示的整数范围也就比int大。例如,int类型的十进制2其实是以000000000 00000000 00000000 00000000 00000010形式存储在内存中。所占字节越多的整数类型可表示的整数范围越大。
  2. 字节:byte类型顾名思义,长度就是一字节,在需要逐字节处理数据时(如图像处理、编码处理等)就会使用byte类型,byte也可以用来表示整数,可表示的整数范围是-128~127。
  3. 浮点数:主要用来储存小数数值,可分为float浮点数(占4字节),double浮点数(占8字节)。double浮点数使用的内存空间比float浮点数来得多,可表示的精确度也比较大。
  4. 字符:char类型用来储存‘A’、‘B’、‘林’等字符符号。每个字符类型占2字节,汉字字符与英文字符在java中同样都是双字节储存。
  5. 布尔:boolean类型可表示true和false,分别代表逻辑的“真”与“假”。在java中不用在意boolean类型的长度,因为你也无法将boolean类型与其他类型做运算。
  6. 备注:每种类型占有的内存长度不同,可储存的数值范围也就不同。例如,int类型的内存空间是四字节,所以可储存的整数范围为-2147483648~2147483647,如果储存值超过了类型范围称为溢值,会造成程序不可预期的后果,而且我们不用记忆各种类型可储存的数值范围,可以通过API来实现。System.out.printf()是标准API,意思是对输出文字做格式化后再显示在文本模式中,一些常用的格式控制符号要熟记!(书上有表格列出) 类类型:详见第四章

2. 变量

程序语言中的暂存位置我们称之为变量,可以声明变量,也就是告诉JVM,我想要某个位置,这个位置叫做XXX名称,可以放什么类型的数据。 1. 使用前要声明变量类型,即使用上文所提到过的short,byte,char等关键词来声明 2. 变量在命名时有一些规则,它不可以使用数字作为开头,不可使用特殊字符,而且变量名称不可以与java的关键词同名,常用“驼峰式”命名法,如“int ageOfStudent”。目前为止,我们的程序范例都是撰写在main()中,在方法中声明的变量称为局部变量。 3. 不可以声明局部变量后未指定任何值给它之前就使用变量。在调用变量之前,要对变量初始化,即给变量赋值。ps:如果,在变量赋值后,不打算改变可以加上final,例如final double PI=3.1415926;来防止自己或他人不经意修改。 4. tips:在表示数字常量时,0b表示二进制数,0x表示十六进制数,如int a=0xC,在表示较长的数字时,使用下划线可以使表达更加清楚。如int b=0b1010 _1010 _1010。

3. 运算符

  1. 算数运算符+、-、*、/。也就是加、减、乘、除。%成为模运算符或余除运算符。算数运算符使用上与学过的加减乘除一样,也是先乘除后加减。(详情看书上例子)运算符两边各留一个空格,这样比较容易阅读。
  2. 数学上还有大于、等于、小于的比较运算,java中也提供了这些运算,这些运算符称为比较运算符,它们有大于(>)、小于(<)、等于(==)、不小于(>=)、不大于(<=)以及不等于(!=)等条件运算符。记住“等于”是两个等号!一个=是指定运算。java有个条件运算符,(Conditional Operator):条件式?成立返回值:失败返回值。如System.out.println("是否及格?%d%n", score>=60?'yes':'no');
  3. 在逻辑运算符中,有“且”“或”“反相”这几种逻辑。分别用&&(与)、||(或)、!(非)来表示。&&的特点在于如果&&左边为假,则不论右边真值如何,其逻辑判断返回结果为假;同样的,||的特点在于如果||的左边为真,则不论右边真值如何,其逻辑判断返回结果为真。这在一定的程度上还是能提高代码的编译执行效率。
  4. 位运算符:在数字设计上有AND、OR、NOT、XOR与补码运算,在java中提供对应的位运算符,分别是&(AND)、|(OR)、^(XOR)、~(补码)。如果不会基本位运算,可以从书上的例子找找感觉。位运算是逐位运算。补码运算是将所有位0变1,1变0。java在位运算中还有(>>)左移与(<<)右移两个运算符。左移运算符会将所有位往左移指定数位,左边被挤出去的位会被丢弃,而右边补上0;右移运算符则相反,会将所有位往右移指定位数,右边被挤出去的位会被丢弃,至于最左边补上原来的位,如果左边原来就是0就补0,是1就补1.还有个>>>运算符,这个运算符在右移后,最左边一定是补0.
  5. 递增递减运算我也觉得没什么难度,和c语言里的知识很类似。关键是要区分i++,++i,如果将++运算写在变量前,表示先将变量值加1,然后再返回变量值;将++写在变量后,表示先返回变量值,然后再对变量加1.(书上有例子)
  6. 指定运算的话,参考书上的表格就行了,没什么难度。

4. 类型转换

  1. 在实际操作中无论是刻意修改还是无心之失,都会出现将变量类型混淆的情况。例如,在默认情况下,整数均为int型,浮点数为double型。像在如下例子中 float PI = 3.14,3.14默认为double型,不能把double型的小数赋给float型,这样就会丢失精度,编译时就会报错。但如果非要用float来储存的话,可以在3.14后面加个F,或者float PI=(float)3.14。在程序中写下一个整数时,默认是不超过int类型长度。如果超过了,你就要告诉编译程序,用long来配置整数的长度,也就是在数字后加上个L.
  2. 运算时,类型不相同,则运算时会以最长的类型为主(自动提升)。当然如果操作中都是不大于int的整数,则全部自动提升为int类型进行运算。
  3. System.out.println(10/3);显示的是3,不是3.3333。因为10与3都是在int类型下的计算,若要表示3.333,则必须是System.out.println(10.0/3)。

5. 流程控制

  1. if……else我觉得很简单,直接类比c语言学的知识。
  2. switch:使用效果类似多个if……else语句连用,但是更为简洁,通过不同的switch值进入case语句。
  3. for:写成for( ……; ……; ……),第一个分号前内容多为变量初始化。第一个分号后为判断,结果为true执行第二个分号后的语句并进入循环,结果为false则结束循环。块与块之间用分号隔开,块的内部用逗号隔开。
  4. while do 与 do while:while(条件式){描述句},先判断条件式是否成立,如果成立,则执行描述句。也可以while(true)直接进入循环,在循环内通过if语句判断,达成某种情况依靠break;结束循环。do while与其的区别是先产生一个number(以书上例子为例),再判断要不要执行循环。而while do是直接一来就进入循环。
  5. break、continue:break为直接结束循环,continue为结束当前循环,跳过之后的描述语句,然后返回开头进行下一轮循环。break、continue还可以配合标签使用(书上有例子),具体过程将在程序实践中展示。

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

课后选择题:DADDABADAD

课后程序题1

运行结果: 1000和495的最大公因子是: 5 1000和495的最小公倍数是: 99000

其实感觉难度不大,因为上学期学过密码学数学基础这门课,刚好这里用到了辗转相除法的概念,在此通过while语句来实现循环,最后当余数为0时结束循环。

课后程序题2

运行结果: 153 370 371 407

我首先想到的是用for循环,通过穷举来找出100~1000中的阿姆斯特朗数,值得注意的是要用%将个位上的数分离出来,且a、b、c都是int型。其他没什么难的地方。

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

如果是continue back1,没有任何输出结果。但如果是continue back2,输出“hello world”九次。这里虽然没有展示break的情况,但是break与continue结合标签使用时,back标签都要在for之前!

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

1.java中的基础语法和c语言中的基础语法其实并没有太大区别,所以可以类比来学习,这样会事半功倍。 2.除了掌握一些基础的知识,主要还是要多敲代码,细节决定成败,不断实践,不断发现错误,不断解决问题,这样自身能力才能提高~!

学习进度条

  代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 3500行 25篇 300小时  
第一周 120/120 1/1 14/14  
第二周 340/460 1/2 14/28  
第三周        
第四周        

参考资料

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

  1. 20145304 刘钦令 Java程序设计第二周学习总结

    20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...

  2. 201521123063 JAVA程序设计 第二周学习总结

    1.本周学习重点(2.27-3.5) java中的数组 以二维数组为例,数组名为scores,则 (1)先声明数组 int[][] scores;或int scores[][];或int[] scor ...

  3. 2017面向对象程序设计(Java)第二周学习总结

    2017面向对象程序设计(Java)第二周学习总结 直系学妹学弟们好!额...不要问我为什么把学妹放前面,我也不知道!我只是你们和蔼可亲的学长一枚而已.也不要问为什么是第二周学习总结而不是第一周,因为 ...

  4. 201871010106-丁宣元 《面向对象程序设计(java)》第二周学习总结

    丁宣元 <面向对象程序设计(java)>第二周学习总结 正文开头 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在 ...

  5. 201521044152<java程序设计>第一周学习总结

    本周学习总结 java开发时间虽然很短,但是发展迅速,已成为现在非常流行的一门语言,很开心能有幸学习java.第一周学习了java的平台,运行环境jdk以及jrt等等新名词,还了解了eclipse的基 ...

  6. 20145304 刘钦令 Java程序设计第一周学习总结

    20145304<Java程序设计>第1周学习总结 教材学习内容总结 1995年5月23日,是公认的Java的诞生日,Java正式由Oak改名为Java. Java的三大平台是:Java ...

  7. 201621123007 Java程序设计第一周 学习总结

    第一周-Java基本概念 201621123007 <Java程序设计> 第一周学习总结 1. 本周学习总结 java是面向对象的一类语言,三大特征:封装性,继承性,多态性. jdk jr ...

  8. 201871010121 王方 《面向对象程序设计(java)》 第二周学习总结

    这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/11475 ...

  9. 杨其菊201771010134《面向对象程序设计Java》第二周学习总结

    第三章 Java基本程序设计结构 第一部分:(理论知识部分) 本章主要学习:基本内容:数据类型:变量:运算符:类型转换,字符串,输入输出,控制流程,大数值以及数组. 1.基本概念: 1)标识符:由字母 ...

  10. 201777010217-金云馨《面向对象程序设计(Java)》第二周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

随机推荐

  1. WPS之替换样式

    以前写文档需要颜色设置什么的时候,都是遇到的时候,就进行设置,挺烦的,要一直切换. 今天突然想到,既然有替换应该可能也有样式替换,就查了一下,试了试果然可以,以后就这么干了

  2. python初学总结(二)

    (1)字典 字典是一种映射关系:键(key),值(value),key-value对 创建字典的方式:直接创建和利用dict函数创建 >>> aInfo = {'Wangdachui ...

  3. 【PHP+Redis】 php-redis 操作类 封装

    <?php /** * redis操作类 * 说明,任何为false的串,存在redis中都是空串. * 只有在key不存在时,才会返回false. * 这点可用于防止缓存穿透 * */ cla ...

  4. Java三方---->excel框架之POI的使用一

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能.pdf框架之IText的使用,参见我的博客:Java ...

  5. LeetCode——Implement Stack using Queues

    Description: Implement the following operations of a stack using queues. push(x) -- Push element x o ...

  6. LeetCode - Employees Earning More Than Their Managers

    Description: The Employee table holds all employees including their managers. Every employee has an ...

  7. 【Android N 7.1.1】 屏幕亮和灭的处理地方

    frameworks/base/services/core/java/com/android/server/display/DisplayPowerController.java private vo ...

  8. 有关InitialContext()的困惑 <转>

    Context initial = new InitialContext();Object objref = initial.lookup("java:comp/env/ejb/Simple ...

  9. ios 图片拉伸不变形的方法

    如果一个椭圆图片,原图大小为30*30,而我们让它显示100*30,那么这个图片就会被拉伸,而且效果很难看.用下边的方法可以创建一个局部不被拉伸的图片. UIImage * buttonBg = [[ ...

  10. Requested bean is currently in creation: Is there an unresolvable circular reference?

    spring容器初始化报错:循环依赖,错误信息如下: Requested bean is currently in creation: Is there an unresolvable circula ...