《疯狂Java讲义》读书笔记(一):面向对象,数据类型和运算符,流程控制与数组

2023-11-12

序言:《疯狂Java讲义》这本书深入介绍了Java编程的相关方面,全书内容覆盖了Java的基本语法结构、Java的面向对象特征、Java集合框架体系、Java泛型、异常处理、JavaGUI编程、JDBC数据库编程、Java注释、Java的IO流体系、Java多线程编程、Java网络通信编程和Java反射机制。共覆盖了java.awt、java.lang、java.io和java.nio、java.sql、java.text、java.util、javax.swing包下绝大部分类和接口。

声明:读书笔记纯粹是在阅读本书时,摘录一些好的句子,运行一些自己的代码而来的。好的东西需要share。

整理时间:2016年10月15日,周六,20:18——2016年11月27日,周日,23:30

第一章:Java语言概述与开发环境

①忠实于Java开发,见过许多所谓的技术经理,他们来应聘往往滔滔不绝,口若悬河,他们知道很多关键词、新名词和概念,但机试往往不是很乐观:说没有IDE工具,提供IDE后又说没有文档,提供了文档又说不能上网,能上网了又说不是在自己的电脑,没有代码参考···他们的理由比他们的技术强!

②C#语言和Java有90%的重叠,Microsoft提供的Visual Studio开发平台极好地提高了C#的开发效率,允许程序员直接通过向导、拖放等操作来快速开发应用,因此更容易使用。但Java是跨平台的,一个大型企业通常使用Java做开发。

号外:笔者刚毕业那2年,在一家生产智能卡的公司也是用C#,那时候刚毕业(2015届),不懂社会行情,但一直没有放弃自学Java。

第二章:面向对象

三个特征:继承、封装和多态。继承是面向对象实现软件复用的重要手段,当子类继承父类后,将直接获得父类的属性和方法;封装是将对象的实现细节隐藏起来,然后通过一些公共的方法来暴露该对象的功能;多态是指子类对象可以直接赋给父类变量,但运行时依然变现出子类的行为特征。抽象不是面向对象的重要部分。Java不支持多继承,类似于每个人只有一个亲生父亲。

第三章:数据类型和运算符
①基本类型分为两大类:数值类型和布尔类型,数值类型包括整型、字符型、浮点型。字符串不是基本数据类型。
②Java的标识符必须以字母、数字、下划线和美元符号$开头。标识符不能以数字开头,不能是Java的关键字和保留字,不能包含空格,不能包含除$之外的符号。
③Java 7 引入了一个新功能:程序员可以在数值中使用下划线,不管是整型还是浮点类型,比如:int count=123_456;
double pi=3.14_15_926_54;主要是为了解决数据庞大时,程序员眼睛“看花”了。
④类型转换原则是:小转大可以。byte->short->int->long->float->double,其中char和short同级。byte不能转char。
⑤System.out.println("Hello!"+3+4);输出:Hello!34;System.out.println(3+4+"Hello!");输出:7Hello!
⑥Math.random() 生成0~1之间小数。8种基本类型都提供一个parseXXX(String str)静态方法用于将字符串转为基本类型。除int对应Integer,char对应Character之外,其它都是首字母大写。比如double对应Double。
⑦常用Math类下的静态方法,用于处理各种复杂的数学运算,如:Math.pow(3,5);//3的5次乘方;Math.sqrt(9);//求9的平方根。Java支持 a=b=c=9;这种写法,但程序可读性不好,不建议这样写。
⑧byte a=2;a=a+3;//会提示编译错误,因为把int类型赋给byte类型的变量,=是赋值。如果是:a+=3;就不会报错。
三目运算符:“?:”语法格式:(表达式)?if-true-statement:if-false-statement,比如:String str=5>3 ? "5大于3":"5不大于3";将输出:5大于3。

第四章:流程控制与数组
①switch语句后面的控制表达式的数据类型只能是byte、short、char、int类型4种,String类型从Java 7才开始允许。且注意不能是StringBuffer或StringBuilder类型的字符串。

myouter:
for (int i = 0; i < 8; i++) {
	for (int j = 0; j < 5; j++) {
		System.out.println("i=" + i + ",j=" + j);
		if (j == 2) {
			break myouter;
		}
	}
}

注:myouter是Java中的标签,后面紧跟着一个英文冒号:的标识符,放在循环语句之前才有用。如果只有break语句,则执行效果是:j=2时,直接回到第一个for循环,继续执行接下来的循环;如果加上标签myouter,则遇到j=2,直接跳出循环到myouter处,就不再执行下面的循环了。myouter必须在break之前定义。myouter名字是自定义,可以叫阿猫阿狗。

③return关键字不是专门用于结束循环的,它的功能是结束一个方法,不管这个return处于多个层循环嵌套之内。
④一旦数组的初始化完成,数组在内存中所占的空间将被固定下来,数组长度将不可改变。数组也是一种数据类型。定义数组方法:
type[] arrName;或者type arrName[];推荐使用第一种。初始化数组有2种方式:静态和动态初始化。如:int[] a={1,2,3};
和int[] arr=new int[5];数组的索引从0开始计算的。即第一个数据元素的索引值是0,最后一个元素的索引值是数组长度-1。

⑤foreach循环可以用来遍历数组和集合。语法格式如下:

String[] arr={"张三","升职","主管"};
for(String str:arr){
   System.out.print(str);
}

输出:张三升职主管

for(类名 val :arr){int a1=val;} 即for(type var:集合)。可以用来遍历类的对象的属性。数组的类型也可以是类名,数组内存放的是对象。Java 8 提供了Arrays的某些静态static方法来直接操作数组,如:int binarySearch(type[] a,type key):使用二分法查询key元素在a数组出现的索引,如果a不包含key,则返回负数,调用该方法要求数组元素已经升序排序。boolean equals(type[] a,type[] b):如果数组a和数组b长度、元素都相同,则返回true。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《疯狂Java讲义》读书笔记(一):面向对象,数据类型和运算符,流程控制与数组 的相关文章

  • 在java中轮询Http服务器(重复发送http get请求)

    当对其进行 REST 调用时 我的 Web 服务器会发送一些信息 我想不断轮询该服务器 间隔5秒后重复发送HTTP GET请求 以检查返回的信息是否有任何变化 做到这一点最有效的方法是什么 您能提供一些代码示例吗 请注意 我只想开发客户端代
  • 带路径压缩算法的加权 Quick-Union

    有一种 带路径压缩的加权快速联合 算法 代码 public class WeightedQU private int id private int iz public WeightedQU int N id new int N iz new
  • java中监视目录变化

    我正在使用 WatchService 来监视目录中的更改 特别是目录中新文件的创建 下面是我的代码 package watcher import java nio file import static java nio file Stand
  • Java Logger 未记录到 Netbeans 中的输出

    我正在 Netbeans 中使用 Maven 启动一个 Java 项目 我编写了一些代码来使用 Logger 类进行日志记录 但是 日志记录似乎不起作用 在程序开始时 我运行 Logger getLogger ProjectMainClas
  • 两个整数乘积的模

    我必须找到c c a b mod m a b c m 是 32 位整数 但 a b 可以超过 32 位 我正在尝试找出一种计算 c 的方法 而不使用 long 或任何 gt 32 位的数据类型 有任何想法吗 如果m是质数 事情可以简化吗 注
  • eclipse行号状态行贡献项是如何实现的?

    我需要更新状态行编辑器特定的信息 我已经有了自己的实现 但我想看看 eclipse 贡献项是如何实现的 它显示状态行中的行号 列位置 谁能指点一下 哪里可以找到源代码 提前致谢 亚历克斯 G 我一直在研究它 它非常复杂 我不确定我是否了解完
  • Java 的支持向量机?

    我想用Java编写一个 智能监视器 它可以随时发出警报detects即将到来的性能问题 我的 Java 应用程序正在以结构化格式将数据写入日志文件
  • Mockito 使用 @Mock 时将 Null 值注入到 Spring bean 中?

    由于我是 Spring Test MVC 的新手 我不明白这个问题 我从以下代码中获取了http markchensblog blogspot in search label Spring http markchensblog blogsp
  • 如何在单个查询中搜索 RealmObject 的 RealmList 字段

    假设我有一堂课 public class Company extends RealmObject private String companyId private RealmList
  • Java Applet 中的 Apache FOP - 未找到数据的 ImagePreloader

    我正在研究成熟商业产品中的一个问题 简而言之 我们使用 Apache POI 库的一部分来读取 Word DOC 或 DOCX 文件 并将其转换为 XSL FO 以便我们可以进行标记替换 然后 我们使用嵌入到 Java 程序中的 FOP 将
  • 从jar中获取资源

    我有包含文件的 jar myJar res endingRule txt myJar wordcalculator merger Marge class 在 Marge java 中我有代码 private static final Str
  • 如何在.NET中使用java.util.zip.Deflater解压缩放气流?

    之后我有一个转储java util zip Deflater 可以确认它是有效的 因为 Java 的Inflater打开它很好 并且需要在 NET中打开它 byte content ReadSample sampleName var inp
  • 如何将 HTML 链接放入电子邮件正文中?

    我有一个可以发送邮件的应用程序 用 Java 实现 我想在邮件中放置一个 HTML 链接 但该链接显示为普通字母 而不是 HTML 链接 我怎样才能将 HTML 链接放入字符串中 我需要特殊字符吗 太感谢了 Update 大家好你们好 感谢
  • JDBC 时间戳和日期 GMT 问题

    我有一个 JDBC 日期列 如果我使用 getDate 则会得到 date 仅部分2009 年 10 月 2 日但如果我使用 getTimestamp 我会得到完整的 date 2009 年 10 月 2 日 13 56 78 890 这正
  • 不可变的最终变量应该始终是静态的吗? [复制]

    这个问题在这里已经有答案了 在java中 如果一个变量是不可变的并且是final的 那么它应该是一个静态类变量吗 我问这个问题是因为每次类的实例使用它时创建一个新对象似乎很浪费 因为无论如何它总是相同的 Example 每次调用方法时都会创
  • 为什么\0在java中不同系统中打印不同的输出

    下面的代码在不同的系统中打印不同的输出 String s hello vsrd replace 0 System out println s 当我在我的系统中尝试时 Linux Ubuntu Netbeans 7 1 它打印 When I
  • 在 Spring 上下文中查找方法级自定义注释

    我想知道的是 所有的类 方法Spring http en wikipedia org wiki Spring Framework注释为 Versioned的bean 我创建了自定义注释 Target ElementType METHOD E
  • 手动设置Android Studio的JDK路径

    如何为 Android Studio 使用自定义 JDK 路径 我不想弄乱 PATH 因为我没有管理员权限 是否有某个配置设置文件允许我进行设置 如果您查看项目设置 您可以从那里访问 jdk 在标准 Windows 键盘映射上 您可以在项目
  • 抛出 Java 异常时是否会生成堆栈跟踪?

    这是假设我们不调用 printstacktrace 方法 只是抛出和捕获 我们正在考虑这样做是为了解决一些性能瓶颈 不 堆栈跟踪是在构造异常对象时生成的 而不是在抛出异常对象时生成的 Throwable 构造函数调用 fillInStack
  • Java 和/C++ 在多线程方面的差异

    我读过一些提示 多线程实现很大程度上取决于您正在使用的目标操作系统 操作系统最终提供了多线程能力 比如Linux有POSIX标准实现 而windows32有另一种方式 但我想知道编程语言水平的主要不同 C似乎为同步提供了更多选择 例如互斥锁

随机推荐

  • 安卓APP_ 布局(2) —— RelativeLayout相对布局

    摘自 安卓APP 布局 2 RelativeLayout相对布局 作者 丶PURSUING 发布时间 2021 04 05 20 19 54 网址 https blog csdn net weixin 44742824 article de
  • 解决Nginx部署Vue项目第一次访问正常第二次访问404的问题

    location add header Access Control Allow Origin root data static project dist try files uri uri index html index index h
  • DNS资源记录详解

    资源记录 resourse record 就是域名服务器保存的记录 也是解析器请求的内容 资源记录保存在zone文件中 域 domain 以 www baidu com 为例 com是一个域 baidu com是一个域 他是com域的一个子
  • 啥是ddl?

    我们在安装软件的时候 经常出现某一个dll文件丢失 无法安装 让人头痛不已 那么到底啥是ddl 还是有度娘好呀 下面是百度百科的词条 数据库模式定义语言DDL Data Definition Language 是用于描述数据库中要存储的现实
  • NFTScan NFT API 在 NFTFi 开发中的应用

    NFTFi 是 NFT 和 Finance 的缩写 旨在 增加 NFT 流动性 提供现金流 NFTFi 是为 NFT 提供金融实用性的去中心化协议和应用程序的新兴生态系统 及使用 NFT 作为基础层在其上建设经济基础设施 在实践中 NFTF
  • 7.7 SHEIN希音笔试

    投的Java工程师岗位 题型为10道单选 5道多选 1道算法题 1道sql题 时长1h 选择题 1 spring事物的传播特性 错误的是 PROPAGATION REQUIRED 支持当前事务 如果当前没有事务 就抛出异常 应该是 支持当前
  • wireshark流量分析网络安全

    目录 前言 题目1 题目2 题目3 题目4 题目5 题目6 题目7 题目8 前言 这是关于一篇wireshark分析数据包的文章 主要是网络安全里的应用 讲述了wireshark的使用方法 主要使用的事wrieshark里的追踪流 欢迎大家
  • elementUI 下拉框select 为多选 赋值回显问题

    下拉框为多选时 绑定的值为数组状态 所以点击编辑赋值时 需要处理为数组 但我遇到的问题是 可以赋值 但不是想要的结果 我想要显示label 但显示的是value 不想得到的效果 想要的是 在赋值后面加 map Number 就可以对号入座了
  • 【翻译】 使用 SFrame 进行可靠的用户空间堆栈跟踪

    请考虑订阅 LWN订阅是 LWN net 的生命线 如果您喜欢这些内容并希望看到更多 您的订阅将有助于确保 LWN 继续蓬勃发展 请访问此页面加入我们 让 LWN 继续在网络上传播 作者 Jonathan Corbet 2023 年 5 月
  • html页面传list,后端list集合中的数据传递到前台HTML中显示(表格形式)

    关键字 web项目中前后台数据传递问题 在学习web项目的过程中 我们肯定会遇到前后台数据交换问题 这个问题我也思考了很久 今天借此总结一下 由于博主水平有限 如有不当之处 还请大家多多指正 废话不所说进入正题 一 HTML页面通过ajax
  • 《Thinking_in_java_4th》持续输出中.......

    目录标题 一 文章目录 二 源码链接 一 文章目录 Java设计者们说过 设计这门语言的灵感主要来自C Java编程思想 第 2章 一切都是对象 Java编程思想 第 4章 控制执行流程 Java编程思想 第14章 类型信息 Java编程思
  • 排名前 16 的 Java 工具类

    原链接 https mp weixin qq com s s6IfovcE LGlZJxIKfT dw 目录 org apache commons io IOUtils org apache commons io FileUtils org
  • 磁耦隔离与传统隔离的区别

    磁耦隔离与传统隔离的区别 传统隔离技术 传统的隔离方式有哪些 这里有三种通常的隔离技术 光电隔离 变压器隔离 磁耦是芯片级变压器隔离技术 电容隔离 在体积 成本 性能等各方面都有优缺点 传统的隔离方式是光电隔离 什么是光耦 什么是光隔离 光
  • Qt GraphicsView框架中实现多个item之间的层次调整功能

    目的 要实现GraphicsView中多个item之间的层次调整功能 即 选中的item可以实现 移动至顶层 移动至底层 上移一层 下移一层 等功能 之前盲目地认为Qt API会提供 获取与之相邻的sibling item 类似这样的接口
  • 2023全新SF授权系统源码 V3.7全开源无加密版本,亲测可用

    2023全新SF授权系统源码 V3 7全开源无加密版本 网站搭建很简单 大致看来一下应该域名解析后上传源码解压 访问域名 install就能直接安装 程序功能简介 1 盗版入库 26种 2 快捷登录 3 采用layuiadmin框架 4 易
  • ASP.NET core MVC动作过滤器执行顺序

    using Microsoft AspNetCore Mvc Filters using System using System Threading Tasks namespace dotnet core Filter public cla
  • 两片74161实现60进制_74LS161设计60进制计数器-数电课程设计

    计数器是一个用以实现计数功能的时序部件 它不仅可用来及脉冲数 还常用作数子系统的定时 分频和执行数字运算以及其它特定的逻辑功能 计数器种类很多 按构成计数器中的各触发器是否使用一个时钟脉冲源来分 有同步计数器和异步计数器 根据计数制的不同
  • js怎么改变样式中的属性值

    可以使用JavaScript来改变HTML元素的样式属性值 具体方法如下 通过id属性获取要修改的元素对象 var obj document getElementById element id 修改元素的样式属性值 obj style pr
  • 错误: 至少有一个需要的隐性或转发依赖函数没找到。_【翻译】自动柯里化Rust函数...

    原文标题 Auto currying Rust Functions 原文链接 https peppe rs posts auto currying rust functions 公众号 Rust碎碎念 本文包含Rust中过程宏 proced
  • 《疯狂Java讲义》读书笔记(一):面向对象,数据类型和运算符,流程控制与数组

    序言 疯狂Java讲义 这本书深入介绍了Java编程的相关方面 全书内容覆盖了Java的基本语法结构 Java的面向对象特征 Java集合框架体系 Java泛型 异常处理 JavaGUI编程 JDBC数据库编程 Java注释 Java的IO