20145325张梓靖 《Java程序设计》第3周学习总结
20145325张梓靖 《Java程序设计》第3周学习总结
教材学习内容总结
- 类与对象 类,就相当于设计图纸,用“new”创建的对象,就是依据设计图做成的成品;设计图纸和成品是放在不同的位置,每使用“new”,说明又新建了不同的对象;当用同一个设计图纸设计多个对象时,每个对象是不同的,只是说每个对象的内容是一致的。例(定义Clothes类)
class Clothes{
string color;
char size;
}
- 构造函数 构造函数是与类名称同名的方法,即构造函数的名称要与所在类的名称一致。例(对Clothes类定义构造函数)
Clothes(String color,char size){
this.color=color;
this.size=size;
}``
- 输入 从外设获取数据可使用
java.util.Scanner
,在建立 Scanner 实例时,必须传入java.io.InputStream
的实例,System.in
就是一种 InputStream ,所以这里可以创建 Scanner 实例时使用; Scanner 的nextInt()
方法会看看标准输入中,有没有输入下一个字符串(以空格或换行分隔),有的话会尝试将之剖析为 int 类型, Scanner 对每个基本类型,都有相对应的 next xxx() 方法,如nextByte()
、nextFloat()
、nextBoolean()
、next()
、nextLine()
等。例
class Clothes{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int guess = scanner.nextInt();
System.out.println(guss);
}
}
- 精度 Java是使用分数与指数来表示浮点数,所以别用 == 直接比较浮点数运算结果。使用
java.math.BigDecimal
类可得到更好的精确度创建其的方法之一是使用字符串, BigDecimal 在创建的时会剖析传入的字符串,以默认精确度进行加下来的运算; BigDecimal 提供加、减、乘、除等运算,plus()
、substract
、multiply
、divide
。例
BigDecimal op1 = new BigDecimal(“1.0”);
BigDecimal op2 = new BigDecimal(“0.8”);
BigDecimal result = op1.suubstract(op2); //前减后
}
BigDecimal 的add()等方法都会返回代表运算结果的 BigDecimal,再调用 equals() 比较两个 BigDecimal 实质上是否相同。
BigDecimal op1 = new BigDecimal(“0.1”);
BigDecimal op2 = new BigDecimal(“0.1”);
BigDecimal op3 = new BigDecimal(“0.1”);
BigDecimal result = new BigDecimal(“0.3”);
if(op1.add(op2).add(op3).equals(result)) {
System.out.println("等于 0.3");
}
- 对象指向与相等性 当=用于基本类型时,是将值复制给变量,是比较两个变量储存的值是否相同;当在操作对象时,=是用来指定参考名称参考某个对象,是用来比较两个参考名称是否参考同一对象,!=正好相反,是比较两个名称是否没参考同一对象。
- 打包基本类型 如果要让基本类型对象一样操作,可以使用Long、Integer、Double、Float、Boolean、Byte等类来打包基本类型。
- Integer 使用Integer打包int类型数据,方法之一是用new创建Integer实例时,传入int类型数据;操作Integer的doubleValue()将打包值以double类型返回,这样就会在double空间中做除;Integer提供compareTo()方法,可与另一个Integer对象进行比较。
- null null代表一个特殊对象,表示没有对象实体,就不能操作其中的方法。
- int Integer中,int的值如果在IntegerCache.low与IntegerCache.high之间,则会在前面缓存中传回Integer实例,否则就使用new创建新的Integer实例。
- 定义数组 在java中,数组就是对象。知道定义数组的具体内容数据时,可定义类似的,例
int[] scores = {66,87,97,78};
或int[] scores = new int[] {87,69,88,79};
或Integer[] scores = {88,68,97};
。只知道元素个数时,可定义类似的,例int[] scores = new int[10];
或Integer[] scores = new Integer[10]
数组的length 属性可以取得数组长度,也就是数组的元素个数。 - 提示错误 索引存取如果超过了索引的范围,就会抛出
ArrayIndexOutOfBoundsException
。 - 数组元素初始值 整型、浮点型的默认初始值为0,boolean初始值为 false ,char 初始值为\u0000,类初始值为 null ;如果默认初始值不符合要求,则可使用
java.util.Arrays
的 fill() 方法来设定新建数组的元素值。 - 数组复制
System.arraycopy( , , , , )
五个参数分别为来源数组、来源起始索引、目的数组、目的起始索引、复制长度。Arrays.copyof()
,建立新数组并进行复制。 - 字符串 在java中,字符串是
java.lang.String
,用来打包字符数组;可以使用String 的 toCharArray() 方法,以将字符串以 char[]数组返回;以“”包括的字符串,只有内容相同(序列、大小写相同),无论在程序代码中出现几次,JVM都只会建立一个String 实例,并在字符串池中维护(用“”写下的字符串称为字符串常量);字符串对象一旦建立,就无法更改对象中的任何内容,但可以使用“+”来连接字符串(产生了新字符串对象) - 封装对象
- 初始流程 , 构造函数是与类名称同名的方法,不用声明返回类型;构造函数可多个,只需参数类型和个数有所区别,这称为重载构造函数;如果没有定义构造函数,系统会自动为其添加一个无参数、无内容的构造函数;创建对象时,数据成员就会初始化,如果没有指定初始值,则会使用默认值初始化;如果撰写了对象初始区块,对象建立之后会先执行对象初始区块,接着才调用指定的构造函数。
- 操作流程 , 在类中定义方法,如果不用返回值,方法名称前可以声明 void ;在java命名习惯中,方法名称首字母是小写,后面单词首字母大写;方法可定义多种,对于类似方法可定义相同名称,只要其参数的个数、类型有所区别;当定义取值的方法时,统一规定命名方式,以get开头,后加首字母大写的单词。
- 内部数据 , 如果有些数据是类所私有的,在java中可以使用private 关键词定义,当没有提供方法存取 private 成员时,用户就不能进行存取,即封装了类私有数据,让用户无法直接存取,而必须通过所提供的操作方法,经过定义了的流程才有可能存取私有数据;private也可用在方法或构造函数声明上。
- 封装目的 , 主要是隐藏对象细节,将对象当作黑箱进行操作。
- 类语法细节
- public , 可在类、对象数据成员、方法、构造函数中使用;如果成员没有声明权限修饰,那么只有在同一包的内程序代码中,才可以直接存取,也就是“包范围权限”;想在其他包的内程序代码中存取某包的类或对象成员,则该类或对象成员必须是公开成员,使用 public 以声明。
- this , 除了被声明为 static 的地方外,this 关键字可以出现在类的任何地方;在构造函数参数与对象数据成员同名时,可用 this 区别; this()代表调用另一个构造函数,至于调用哪个构造函数,则视调用this()时给的自变量类型与个数而定(this()调用只能出现在构造函数的第一行)。
- final , 如果对象数据成员被声明为 final ,但没有明确使用=指定值,那表示延迟对象成员值得指定,在构造函数(每个)执行流程中,一定要有对该数据成员指定值的动作,否则编译错误。
- static , 被声明为 static 的成员,不会让个别对象拥有,而是属于类;通过类名称与“.”运算符,就可以取得 static 成员;static 方法中不能用非 static 数据类型,不能用非 static 方法成员;如果有些动作想在位码加载后执行,在可定义 static 区块;如果想简化对 static 成员或的方法的使用,则可使用
import static
。 - 不定长度自变量 , 要使用不定长度自变量,声明参数列时要在类型关键字后加上...,且声明的不定长度参数必须是参数列最后一个,也不能使用两个以上不定长度自变量。
- 内部类 ,在类中再定义类,称为内部类;内部类可以定义在类区块中,也可以使用 public、protected、private声明;内部类本身可以存取外部类的成员,被声明为 static 的内部类,可以存取外部类 static 成员,但不可以存取外部类非 static 成员;方法中也可声明类,方法外无法使用。
- 传值调用 , java当中只有传值调用。
教材学习中的问题和解决过程
- 问题 P154,8题,程序片段 for 循环初始条件,
i = 10;
,我觉得它应该想写的是i = 0;
。还有 C 选项,Some.sum(new int[1,2,3])
,答案说是对的,我觉得正确的应该是Some1.sum(new int[]{1,2,3})
吧 - 解决过程 原代码
class Some1 {
public static int sum(int... nunber) {
int sum = 0;
for (int i=0;i<nunber.length;i++){
sum+=nunber[i];
}
return sum;
}
}
class UseSome2{
public static void main(String[] args) {
int some1=Some1.sum(1,2,3);
int some2=new Some1().sum(1,2,3);
int some3=Some1.sum(new int[1,2,3});
System.out.println(some1);
System.out.println(some2);
System.out.println(some3);
}
}
显示结果为
修改后代码为
class UseSome1{
public static void main(String[] args) {
int some1=Some1.sum(1,2,3);
int some2=new Some1().sum(1,2,3);
int some3=Some1.sum(new int[]{1,2,3});
System.out.println(some1);
System.out.println(some2);
System.out.println(some3);
}
}
结果为
代码调试中的问题和解决过程
代码调试中,问题不太大。对于P121的操作题2,如果用 1+(int)Math.random()*50+(int)Math.random()*10/3
来操作,可以直接表示1~52张不同花色的牌,然后用 Switch 来排列,并用数组记住已经出现过的牌,防止再次出现,可以是可以,但是写的东西会很多;倒是可以用2个 switch 分别装数字和花色,但是,在判断不能重复的时候,却很麻烦,我能想到的就是用数组才存用过的牌,但不知道有没有什么比较简便的 方法可以用来排除使用过的牌,确保使用过的牌不会重复使用。
代码托管
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 3500行 | 28篇 | 300小时 | |
第一周 | 150/150 | 1/1 | 20/20 | |
第二周 | 100/250 | 1/2 | 22/42 | |
第三周 | 150/400 | 2/4 | 21/63 | |
第四周 |
参考资料
20145325张梓靖 《Java程序设计》第3周学习总结的更多相关文章
- 20155225 2016-2017-2 《Java程序设计》第九周学习总结
20155225 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC入门 了解JDBC架构 使用JDBC API JDBC是用于执行SQL的解决方案,开 ...
- ## 20145203盖泽双 《Java程序设计》第二周学习总结
20145203盖泽双 <Java程序设计>第二周学习总结 教材学习内容总结 1.java可以分为基本类型和类类型,基本类型包括整数.字节.浮点数.字符与布尔. 整数:short(占两个字 ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
随机推荐
- web基础----->servlet中得到请求的数据
对tomcat的源码做一些分析,今天我们就开始servlet中的请求分析. form表单中的默认类型 一.在index.jsp中get请求: <form action="Paramet ...
- LeetCode - Customers Who Never Order
Description: Suppose that a website contains two tables, the Customers table and the Orders table. W ...
- RxJava && Agera 从源码简要分析基本调用流程(1)
版权声明:本文由晋中望原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/123 来源:腾云阁 https://www.qclo ...
- hdu5009 Paint Pearls[指针优化dp]
Paint Pearls Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- TextureMerger1.6.6 一:Egret MovieClip的制作和使用
本随笔记录TextureMerger来制作动画,并在Egret中使用. 参考官网教程:http://bbs.egret.com/forum.php?mod=viewthread&tid=918 ...
- 【Android】Could not find XXX.apk!的解决方法
昨天在Eclipse中导入一个Android工程后点击运行时出现了Could not find XXX.apk!的错误信息,具体错误提示如下: 到网上搜了好多方法,挨个尝试,最后都没解决但是,重启 ...
- 170712、springboot编程之集成shiro
这篇文章我们来学习如何使用Spring Boot集成Apache Shiro.安全应该是互联网公司的一道生命线,几乎任何的公司都会涉及到这方面的需求.在Java领域一般有Spring Security ...
- TC/IP协议簇
TCP/IP: 数据链路层:ARP,RARP网络层: IP,ICMP,IGMP传输层:TCP ,UDP,UGP应用层:Telnet,FTP,SMTP,SNMP. OSI:物理层:EIA/TIA-232 ...
- IntelliJ IDEA 插件
alibaba java coding guidelines 阿里巴巴Java编码指南插件支持. Mybatis-log-plugin 把 mybatis 输出的sql日志还原成完整的sql语句. ...
- appfog 添加数据库支持
1.PhpMyAdmin与app 在同一应用 1.cd进入应用所在的文件夹,输入 git clone git://github.com/appfog/af-php-myadmin.git 2.进入本地 ...