head first java原文_Head First Java

条件语句

&和|可以用作条件语句,但是是长连接,左右两边的表达式必须都执行完!这和&&和||不同,&&和||是短连接,只要左边的表达式已经能够计算出整个表达式的结果,右边的表达式就不会执行!

继承、重载、多态

重载和多态不是一个概念:

重载:类内的、横向的关系;两个方法名称相同,但参数不同,返回类型可以不同(但不能只改变返回类型),存取权限可以不同(因为重载的两个方法之间没有更多的关系,与继承和多态无关)。

多态:类间(父类和子类)的、纵向的关系;继承自父类的方法并覆盖重写,方法名称相同,参数相同,返回类型相同或为该返回类型的子类(且子类保证能执行父类的一切行为),存取权限相同或更为开放。

关于返回类型和存取权限的不相同情况,可以从子类的声明不能影响父类中声明的使用方式这一角度来看,因为多态的目的就是使用父类作为引用而不关心子类的实现,,所以子类的声明不能使得父类中的声明所体现的使用方式无法使用。因而,返回类型子类不能超出父类的声明,而存取权限子类不能限制父类的声明。

调用method:

编译器根据引用类型来判断哪些method可以调用,而不是对象真正的类型。但是在调用哪个版本时,是根据对象的真正类型寻找最近的版本。

为什么会允许创建Object对象?

因为有时候就是需要创建一个通用的对象,一个轻量化的对象,最常见的是在线程的同步化中。

super、this

每个构造函数可以选择调用super()或this(),但不能同时调用,且它们必须是构造函数的第一条语句(父类构造函数是子类构造函数执行的第一步,父类必须先于子类构造)。

输出格式化

普通格式化

格式化说明:

fe91d9420cb52fb7b3ba2abc47a04037.png

格式化例子:%1$,06.1f

1$:使用第1个参数(计数是1基的,即格式化字符串后面的第一个参数)作为浮点数进行格式化;

使用“,”分隔整数部分;

06:整数部分最少6个字符,不足部分用0补齐;

.1:小数点之后保留一位小数;

f:浮点数;

日期格式化(String.format(...))

072cc03a2c7af39d2d24637d822b166b.png

格式化中“<”表示重复利用之前用过的参数

日期类

java.util.Calendar:set(...)中的月份是零基的,所以0表示一月份,并且set是有延迟的。

异常

try/catch是用来处理真正的异常,是程序员无法预测或防止的执行期失败状况,而不是程序的逻辑错误,而runtimeexception大部分都是程序的逻辑问题,属于非检查异常(unchecked,编译器不检查)。

输入输出

串流(InputStream/OutputStream)

设计原则:

面向对象设计:每个类只要做好一件事情就行了。

所以java的输入/输出API带有连接类型的串流,代表来源与目的地之间的链接,连接串流将串流与其他串流连接起来。

一般来说,串流要两两连接才有意义——其中一个表示连接(输入的来源或输出的目的地),另一个表示要被调用方法(高层API,读取出真正的高层次数据类型或输出真正的高层次数据)。

比如FileOutputStream用于想文件写入字节,但我们通常并不直接写字节,而是以对象层次的观点来写入,所以需要高层次的连接串流处理高层次的对象数据到字节流的连接。

于是这样就可以通过不同的组合来达到最大的适应性,而不必在一种串流类中考虑所有可能的情况(这是不可能的)。

序列化

标记接口:

Serializable接口又被成为marker或tag类的标记用接口,所有需要被序列化的类都需要声明实现该接口,而实际上没有任何方法需要被实现,只是用来标记,告诉JVM这个类可以被序列化。

而一个类被序列化时,其内部所有的成员变量也将被序列化,因此它的成员变量也必须是能被序列化的,即实现了Serializable接口。

过滤:

如果某个成员变量不需要序列化,则使用关键字transient标记一下,序列化将跳过这个变量。

指向不变性:

序列化会区分两个变量指向的对象是否相同,如果序列化时两个变量指向同一个对象,则反序列化时这两个变量依然指向同一个对象。

父类与子类:

不可序列化的父类(非final)可以有可序列化子类,但是当对象被反序列化时,父类的构造函数将和创建新的对象一样执行(可序列化类的构造函数不会被执行),属于该不可序列化父类及其祖先类的成员变量将被构造函数初始化,但是被可序列化子类重载的成员变量将按照子类中的定义(是否transient)进行序列化和反序列化。

static:

静态变量不会被序列化,反序列化后静态变量会维持类中原本的样子,而非存储时的值。

序列化版本serialVersionUID:

在类中显式地保存这个ID,则可以保证可序列化的类在演化后依然保持相同的ID,从而在经历了不损坏序列化的演化后该类依然能够反序列化之前序列化的数据(新加的变量将使用默认值)。

泛型

在方法参数中使用万用字符?时,编译器会阻止任何可能破坏引用参数所指集合的行为,即只读不可写:

class ChildClass extends SuperClass {

...

}

public void f(List extends SuperClass> list) {

list.get(0); // ok

list.add(new ChildClass()); // wrong

}

这样倒是可以:

public  void f(List list) {

list.get(0); // ok

list.add((T) new ChildClass());

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/412123.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#操作XML

已知有一个XML文件&#xff08;bookstore.xml&#xff09;如下&#xff1a; <?xml version"1.0"encoding"gb2312"?><bookstore><book genre"fantasy"ISBN"2-3631-4"><title>Oberons Legacy</title> &…

20175204 张湲祯 2018-2019-2《Java程序设计》 第一周学习总结

20175204 张湲祯 2018-2019-2《Java程序设计》第一周学习总结 教材学习内容总结 -第一章Java入门要点&#xff1a; -Java的地位&#xff1a;具有面向对象&#xff0c;与平台无关&#xff0c;安全稳定和多线程等优良特性&#xff0c;是软件设计中优秀的编程语言。 -Java的特点&a…

使用线程,防止当前程序被阻塞

在编写Windows Form程序时有时需要编写一个处理大事件的函数&#xff0c;这导致了程序的运行时间变得很长&#xff0c;这时问题就出现了&#xff0c;当程序没有处理完毕之前当前窗体被锁死了&#xff0c;而且用户如果此时点击窗体的其他部分&#xff0c;便会出现没有响应的标识…

探索未知种族之osg类生物---呼吸分解之更新循环一

上节总结 前几天我们大体上介绍完成了osg的事件循环的介绍&#xff0c;总结一下osg的时间循环主要就是得到平台(windows)的所有消息&#xff0c;并遍历所有的node的eventCallback&#xff0c;并对他们进行处理。接下来我们就要进入osg的另一个维持生命的循环---更新循环。 更新…

java变换变量赋值_Java变量的类型转换

在程序中&#xff0c;当把一种数据类型的值赋给另一种数据类型的变量时&#xff0c;需要进行数据类型转换。根据转换方式的不同&#xff0c;数据类型转换可分为两种:自动类型转换和强制类型转换。自动类型转换自动类型转换也叫隐式类型转换&#xff0c;指的是两种数据类型在转换…

如何进行.NET高效开发

sugar 2006-03-12 13:53 转载于:https://www.cnblogs.com/SCOTT-SUN/archive/2006/06/02/416077.html

洛谷 P3244 / loj 2115 [HNOI2015] 落忆枫音 题解【拓扑排序】【组合】【逆元】

组合计数的一道好题。什么非主流题目 题目背景 &#xff08;背景冗长请到题目页面查看&#xff09; 题目描述 不妨假设枫叶上有 \(n​\) 个穴位&#xff0c;穴位的编号为 \(1\sim n​\)。有若干条有向的脉络连接着这些穴位。穴位和脉络组成一个有向无环图——称之为脉络图&…

配置msf连接postgresql数据库

BackTrack 5 R3版本的Metasploit在每次的升级后总会出现奇奇怪怪的错误&#xff0c;主要是Ruby的库出错&#xff0c;网上找了一些解决的办法&#xff0c;但每次更新后又会出错&#xff0c;蛋碎。 解决方法&#xff1a; BackTrack 5中默认自动开启端口7337。 1、查看PostgreSQL端…

web文件加密

讲解以及源代码下载ASP.NET 2.0: Encrypting Connection Strings http://blogs.vertigosoftware.com/snyholm/archive/2005/12/16/1746.aspx http://msdn2.microsoft.com/en-us/library/yxw286t2.aspx中文http://msdn2.microsoft.com/zh-cn/library/yxw286t2.aspx ASP.NET 2.0:…

java开发和android开发_浅谈Java开发和Android开发的不同

Java是具有多种用例的完整开发语言&#xff0c;包括Web开发&#xff0c;PC程序开发&#xff0c;嵌入式开发等。Android开发是面向手机应用&#xff0c;使用Java较多&#xff0c;还有常用的H5跨平台混合架构模式。一&#xff0c;UI界面开发不同1)Java Swing现在Java开发基本上都…

远程上传下载文件-Xftp5

Xftp5下载 链接&#xff1a;https://pan.baidu.com/s/1Wzso_Q7mPy5uGOUlripEWg 密码&#xff1a;xfx9 安装选择家庭版 由于21端口没有开&#xff0c;所以不能选FTP, 选择SFTP&#xff0c;22端口 用哪个用户登录机会自动到该用户的家目录 连接上出先乱码问题 属性 OK. 转载于:h…

java反射 pdf_java反射学习笔记整理.pdf

java反射学习笔记整理.pdf还剩15页未读&#xff0c;继续阅读下载文档到电脑&#xff0c;马上远离加班熬夜&#xff01;亲&#xff0c;很抱歉&#xff0c;此页已超出免费预览范围啦&#xff01;如果喜欢就下载吧&#xff0c;价低环保&#xff01;内容要点&#xff1a;Java 反射笔…

变态跳台阶

题目描述 一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。题解 简要提炼思路&#xff1a; 1、有n个台阶&#xff0c;则每次可以跳1&#xff0c;2&#xff0c;3&#xff0c;&#xff0c;&#xff0c;n个…

Visual Basic .NET处理Excle表格全接触

Visual Basic .Net处理Excel表格机理和处理Word文档一样&#xff0c;也是通过互操作&#xff0c;引入COM组件来实现的&#xff0c;所以前提条件是运行本文中介绍的程序的计算机必须安装Office 2000中的Excel软件。如果计算机安装的Office 2000&#xff0c;那么这个COM组件就是M…

aspnet_UsersInRoles_GetUsersInRoles

ALTERPROCEDUREdbo.aspnet_UsersInRoles_GetUsersInRoles --查询某角色的用户ApplicationNameNVARCHAR(256), RoleNameNVARCHAR(256)ASBEGINDECLAREApplicationIdUNIQUEIDENTIFIERSELECTApplicationIdNULLSELECTApplicationIdApplicationId FROMaspnet_Applications WHERELO…

Jenkins二 安装gitlab及其使用

git --version 如果没有安装git直接源码安装即可&#xff0c;如果安装了先删除原来的git。 yum -y remove git先安装编译git需要的包。 yum install zlib-devel perl-CPAN gettext curl-devel expat-devel gettext-devel openssl-devel下载&安装 去gitlab官网 https://abou…

编程使用资源文件实现多语言页面(In Action)

需求&#xff1a;我们的ASP.NET站点需要提供多语言支持&#xff0c;考虑到我们使用的是ASP.NET2.0&#xff0c;我们可以利用资源文件来实现。 <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />NOTE:这里我们使用编程的方法实现&a…

java final内存机制_Java中的内存处理机制和final、static、final static总结

装载自&#xff1a;http://blog.csdn.net/wqthaha/article/details/20923579Java程序运行在JVM上&#xff0c;可以把JVM理解成Java程序和操作系统之间的桥梁&#xff0c;JVM实现了Java的平台无关性&#xff0c;由此可见JVM的重要性。所以在学习Java内存分配原理的时候一定要牢记…

MySQL中的字符集涵义及使用方法总结(二)

五.乱码的避免最好让上述9个字符集变量值保持一致&#xff0c;或者至少“兼容”&#xff0c;同时也要考虑到OS中locale的值。当然&#xff1a;character_set_system例外&#xff0c;它是存储和表示元信息使用的字符集&#xff0c;一般都是ascii串&#xff0c;使用utf8和使用lat…

vim 多行添加注释,取消注释

转发 已经验证 https://blog.csdn.net/SuiXin_123/article/details/81393397转载于:https://www.cnblogs.com/pingg/p/10509301.html