20165220 Java第六周学习总结
教材学习内容总结
- 正则表达式:正则表达式是一个String对象的字符序列,该字符序列中含有具有特殊意义的字符,这些特殊字符称作正则表达式的元字符。
- 链表:由若干个称作结点的对象组成的一种数据结构,用于动态的减少或增加数据项。
- String类是final类,也即意味着String类不能被继承,并且它的成员方法都默认为final方法。在Java中,被final修饰的类是不允许被继承的,并且该类中的成员方法都默认为final方法。
- String对象:可以使用String类声明对象并创建对象,例如:String s = new String("we are students");
String t = new String("we are students"); - 堆栈对象的创建以及压栈、弹栈的操作等
- 链表:由若干个称作结点的对象组成的一种数据结构,用于动态的减少或增加数据项。
- 获取堆栈顶端的数据,但不删除该数据: public int search(Object data);
- 使用String类调用format方法对数字进行格式化;
- 使用Date及Calendar处理和日期、时间相关的数据;
- 泛型(Generics),其主要目的是可以建立具有类型安全的集合框架,如链表、散列映射等数据结构。
可以使用“class 名称<泛型列表>”声明一个类,为了和普通的类有所区别,这样声明的类称作泛型类,如:
class People其中People是泛型类的名称,E是其中的泛型,也就是说我们并没有指定E是何种类型的数据,它可以是任何对象或接口,但不能是基本类型数据。 - java.lang.String类使用了final修饰,不能被继承。Java程序中的所有字面值,即双引号括起的字符串,如"abc",都是作为String类的实例实现的。String是常量,其对象一旦构造就不能再被改变。换句话说,String对象是不可变的,每一个看起来会修改String值的方法,实际上都是创造了一个全新的String对象,以包含修改后的字符串内容。而最初的String对象则丝毫未动。String对象具有只读特性,指向它的任何引用都不可能改变它的值,因此,也不会对其他的引用有什么影响。但是字符串引用可以重新赋值。java字符串在内存中采用unicode编码方式,任何一个字符对应两个字节的定长编码,即任何一个字符(无论中文还是英文)都算一个字符长度,占用两个字节。
- 常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。Java为了提高性能,静态字符串(字面量/常量/常量连接的结果)在常量池中创建,并尽量使用同一个对象,重用静态字符串。对于重复出现的字符串直接量,JVM会首先在常量池中查找,如果常量池中存在即返回该对象。
String、StringBuffer和StringBuilder的区别
1.对象的可变与不可变
String类中使用字符数组来保存数据,因为有“final”修饰符,所以string对象是不可变的。如下:
private final char value[];
StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存数据,这两种对象都是可变的。如下:
char[] value;
2.是否是线程安全
String中的对象是不可变的,也就可以理解为常量,所以是线程安全。
AbstractStringBuilder是StringBuilder与StringBuffer的公共父类,定义了一些字符串的基本操作,如expandCapacity、append、insert、indexOf等公共方法。
StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。
3.StringBuilder与StringBuffer共同点
StringBuilder与StringBuffer有公共的抽象父类AbstractStringBuilder。
抽象类与接口的一个区别是:抽象类中可以定义一些子类的公共方法,子类只需要增加新的功能,不需要重复写已经存在的方法;而接口中只是对方法的申明和常量的定义。
StringBuilder、StringBuffer的方法都会调用AbstractStringBuilder中的公共方法,如super.append(...)。只是StringBuffer会在方法上加synchronized关键字,进行同步。
如果程序不是多线程的,那么使用StringBuilder效率高于StringBuffer。
代码调试中的问题和解决过程
在编译的时候出现了这个错误提示;
解答:检查了代码没有任何问题出现,参考之前发生过的错误,我首先分析了原因,这应该是需要多个文件共同编译导致的。随后我查阅资料并询问同学,找到了一种办法,就是将相关的文件加以相同的前缀,然后统一编译、运行。就比如E9_1 E9_2 E9_3,然后用命令javac E9*.java来进行编译运行。虽然使得类名没意义,但是能解决问题。可以在此基础上再寻求更好的解决方案。
代码托管
上周考试错题总结
错题1:
父类中有个public void fight(),子类中有个public void fight( Weapon w),这两个方法的关系是Override.
A.true
B.false
解析:子类重写的方法,方法名字、参数个数、参数类型和父类的方法完全相同。这里是重载.
错题2:
下列关于abstract关键字的说法,正确的是
A.可以使用static修饰abstract方法。
B.非abstract类中不可以有abstract方法。
C.不能使用new创建abstract类的对象。
D.不允许使用final和abstract同时修饰一个方法.
E.可以使用public abstract void eat(){};来声明抽象方法eat()。
F.抽象方法只保留方法的功能,而具体的执行,交给继承抽象类的子类,由子类重写此抽象方法。
解析:5.9节。A项:abstract关键字不能应用于static、private或final 方法。E项:不能有方法体。
感悟:
这周的内容比前两周明显多了不少,而且是过去没有接触过的新知识和新概念,理解起来需要一定的时间,编写代码也要一步一步地努力提高。我对这些新知识现在还掌握得不够熟练,希望多花时间敲代码后能够熟练应用。我觉得课前预习是非常有必要的,如果不及时掌握那么会被落下很多很多,跟着大部队一起前进才是最好的,结对学习也初次体验了乐趣,相信以后会越来越好!
参考资料
20165220 Java第六周学习总结的更多相关文章
- 20165210 Java第六周学习总结
20165210 Java第六周学习总结 教材学习内容 第八章学习总结 String类: 构造String对象: 1. 常量对象 2. String对象 3. 引用String常量 字符串的并置: S ...
- 20145304 Java第六周学习报告
20145304<Java程序设计>第六周学习总结 教材学习内容总结 1.InputStream与OutputStream: 在Java中,输入串流的代表对象为java.io.InputS ...
- 20165326 java第六周学习笔记
第六周学习总结 ch8 String类对于有效处理字符序列信息非常重要. String对象的字符序列不能被修改删除,无法发生变化. StringBuffer类的对象实体的内存空间可以自动改变大小,便于 ...
- 2016-2017-2 20155309 南皓芯java第六周学习总结
教材内容详解 这一次主要学习的是第十章与第十一章的内容.主要讲述了串流,字符处理和线程以及并行API. 输入输出 串流:Java中的数据有来源(source)和目的地(destination),衔接两 ...
- 201521123093 java 第六周学习总结
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...
- 20165221—JAVA第六周学习心得
课本知识点小结 第8章:常用实用类 String类 常量对象放入常量池中,而用string声明的对象变量中存放着引用.凡是new构造的常量都不在常量池中. startIndex表示提取字符的起始位置, ...
- 20165220 Java第五周学习总结
教材学习内容总结 1.try—catch语句:Java用try—catch语句来处理异常.将可能出现的异常操作放在try中,当try出现异常时,此部分立刻结束运行,转向执行catch部分.一个try- ...
- 20165220 Java第三周学习总结
1.教材学习内容总结 类与对象 类与对象的关系:要产生对象必须先定义类,类是对象的设计图,对象是类的实例 为个别对象的数据成员指定值的方式是:对象.对象成员 注意“一类一文件” 类在定义时要使用关键词 ...
- Java第六周学习总结
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...
随机推荐
- GitHub访问慢
问题描述 一直都觉得访问 GitHub 时速度非常慢,刷新一下都要等好久!于是尝试一下能否解决掉... github.com assets-cdn.github.com avatar2.githubu ...
- ionic3 极光推送
参考网站:http://www.jianshu.com/p/eb8ab29329d9 遇到的问题是 执行以下命令一直报错 cordova plugin add https://github.com/ ...
- android组件之TabHost
一 介绍 1.1 TAB的容器.这个对象包含两个子元素: TabWidget:管理标签(tabs),用户点击来选择一个特定的标签,是它告诉TabHost去切换界面的 FrameLayout:对象显示该 ...
- Redis简介与安装
目录 Redis概述与安装使用 Redis概述与安装使用 Author:SimpleWu GitHub-redis Redis简介 Redis英语全称:( REmote DIctionary Serv ...
- vue中 裁剪,预览,上传图片 的插件
参考地址: https://github.com/dai-siki/vue-image-crop-upload
- shell之ulimit应该注意的事项
详细介绍:http://www.cnblogs.com/xiaOt119/archive/2012/06/13/2547930.html ulimit -n 2048 1.这个限制是针对单个程序的限制 ...
- php安装扩展
php安装扩展 以前以为php的扩展要重新编译php,今天在群友的指点下知道可以像apache模块一样动态扩展,以mcrypt举例. 进入要安装的扩展的源码目录cd /root/php-5.2.6/e ...
- Mysql 5.7 CentOS 7 安装MHA
Table of Contents 1. MHA简介 1.1. 功能 1.2. MHA切换逻辑 1.3. 工具 2. 环境 2.1. 软件 2.2. 环境 3. Mysql 主从复制 3.1. Mys ...
- 论文阅读笔记十:DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs (DeepLabv2)(CVPR2016)
论文链接:https://arxiv.org/pdf/1606.00915.pdf 摘要 该文主要对基于深度学习的分割任务做了三个贡献,(1)使用空洞卷积来进行上采样来进行密集的预测任务.空洞卷积可以 ...
- 正则表达式过滤html标签
1.说明:需要使用非贪婪模式 2.示例 过滤所有span标签: var newContent = Regex.Replace(htmlContent, "<span.*?>.*? ...