jianfazhang
jianfazhang
jianfa-home
21 posts
This is a warm place.
Don't wanna be here? Send us removal request.
jianfazhang · 5 years ago
Text
创建多线程的三种方式
1. 继承Thread类 2. 实现Runnable接口 3. 匿名类的方式 注: 启动线程是start()方法,run()并不能启动一个新的线程
0 notes
jianfazhang · 5 years ago
Link
我们经常会使用 equals 和 == 来判断两个对象是否相等,那么两者有什么区别呢,主要有以下几点区别:
首先的区别是,equals 是方法,而 == 是操作符;
对于基本类型的变量来说(如 short、 int、 long、 float、 double),只能使用 == ,因为这些基本类型的变量没有 equals 方法。对于基本类型变量的比较,使用 == 比较, 一般比较的是它们的值。
对于引用类型的变量来说(例如 String 类)才有 equals 方法,因为 String 继承了 Object 类, equals 是 Object 类的通用方法。对于该类型对象的比较,默认情况下,也就是没有复写 Object 类的 equals 方法,使用 == 和 equals 比较是一样效果的,都是比较的是它们在内存中的存放地址。但是对于某些类来说,为了满足自身业务需求,可能存在 equals 方法被复写的情况,这时使用 equals 方法比较需要看具体的情况,例如 String 类,使用 equals 方法会比较它们的值;
对于上述第三点理解起来可能有点复杂,因为这里 equals 方法比较需要分两种情况来讨论,一种情况是该方法没有被重写,另外一种是该方法被重写。
对于 equals 方法没有被重写的情况。如果类没有重写该方法,那么默认使用的就是 Object 类的方法,以下是 Object 类的 equals 方法:从源码可以看出,比较的就是它们在内存中的存放地址。
对于 equals 方法被重写的情况。以 String 类为例,以下是 String 类中的 equals 方法 从源码可以看出, String 类复写了 equals 方法,当使用 == 比较内存的存放地址不相等时,接下来会比较字符串的内容是否  相等,所以 String 类中的 equals 方法会比较两者的字符串内容是否一样。
0 notes
jianfazhang · 5 years ago
Photo
Tumblr media
Collection是 Set List Queue和 Deque的接口 Queue: 先进先出队列 Deque: 双向链表 注:Collection和Map之间没有关系,Collection是放一个一个对象的,Map 是放键值对的 注:Deque 继承 Queue,间接的继承了 Collection
0 notes
jianfazhang · 5 years ago
Photo
Tumblr media
UML图,统一建模语言。UML图分为结构图和行为图。结构图分为类图、轮廓图、组件图、组合结构图、对象图、部署图、包图。行为图又分活动图、用例图、状态机图和交互图。交互图又分为序列图、时序图、通讯图、交互概览图。
Tumblr media
具体解析见网址:https://www.yinxiang.com/everhub/note/d2f91fe6-22bc-4d73-a15a-9b0d28e19326
0 notes
jianfazhang · 5 years ago
Photo
Tumblr media
则需要一个DHCP动态主机配置协议是如何工作的呢,DHCP是一个客户-服务器工作模式,通常,每个子网都需要有一台DHCP服务器,如果该子网没有,则需要一个中继代理,这个代理知道该子网的DHCP服务器的地址。当一台新到达的主机进��一个子网,需要在相应的子网下分配一个临时IP地址。可分为四个步骤:
(1)新到达客户在UDP分组中向端口67发送DHCP发现报文,由于不知道DHCP服务器地址,所以发送的是广播255.255.255.255,自身的地址也是未知的,所以源地址是0.0.0.0,客户将该IP数据报传送至链路层,链路层将该帧广播至所有与子网相连的子网。
(2)DHCP服务器收到发现报文以后,用一个DHCP提供报文反馈该客户,但是目的地址仍然是广播地址,因为该子网中可能有多个DHCP服务器,该客户可能会在几个提供者之间进行选择。提供的信息包括,推荐的IP地址、网络掩码、以及IP租用期。
(3)客户在收到一个或者多个DHCP提供报文以后,选择一个IP,并向选择服务器提供一个DHCP请求。
(4)被选择的DHCP服务器向客户发送一个DHCP ACK进行响应。
至此,客户就可以在IP租期内使用服务器发送来的临时IP地址。
0 notes
jianfazhang · 5 years ago
Photo
Tumblr media
可查异常和非可查异常,可查异常是必须要处理(catch或者抛出)的异常,非可查异常分为运行时异常和错误两种。
RuntimeException如果使用try和catch异常可以被捕捉。
错误Error 不能够被捕捉 
运行时异常与非运行时异常的区别:
 Throwable 是所有 Java 程序中错误处理的父类 ,有两种资类: Error 和 Exception 。    
Error :表示由 JVM 所侦测到的无法预期的错误,由于这是属于 JVM 层次的严重错误 ,导致 JVM 无法继��执行,因此,这是不可捕捉到的,无法采取任何恢复的操作,顶多只能显示错误信息。
 Exception :表示可恢复的例外,这是可捕捉到的。 Java 提供了两类主要的异常 :runtime exception 和 checked exception 。 checked 异常也就是我们经常遇到的 IO 异常,以及 SQL 异常都是这种异常。 对于这种异常, JAVA 编译器强制要求我们必需对出现的这些异常进行 catch 。所以,面对这种异常不管我们是否愿意,只能自己去写一大堆 catch 块去处理可能的异常。    
另外一种异常: runtime exception ,也称运行时异常,我们可以不处理。当出现这样的异常时,总是由虚拟机 接管。比如:我们从来没有人去处理过 NullPointerException 异常,它就是运行时异常,并且这种异常还是最常见的异常之一。    出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果没有处理块,到最上层,如果是多线程就由 Thread.run() 抛出 ,如果是单线程就被 main() 抛出 。抛出之后,如果是线程,这个线程也就退出了。如果是主程序抛出的异常,那么这整个程序也就退出了。运行时异常是 Exception 的子类,也有一般异常的特点,是可以被 Catch 块处理的。只不过往往我们不对他处理罢了。也就是说,你如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。    如果不想终止,则必须扑捉所有的运行时异常,决不让这个处理线程退出。队列里面出现异常数据了,正常的处理应该是把异常数据舍弃,然后记录日志。不应该由于异常数据而影响下面对正常数据的处理。 在这个场景这样处理可能是一个比较好的应用,但并不代表在所有的场景你都应该如此。如果在其它场景,遇到了一些错误,如果退出程序比较好,这时你就可以不太理会运行时异常 ,或者是通过对异常的处理显式的控制程序退出。 
Throwable 类是Error和Exception的父类,如果抛出的是Throwable类,那么在catch的时候也必须是Throwable类型。
0 notes
jianfazhang · 5 years ago
Text
throw和throws区别
throws与throw这两个关键字接近,不过意义不一样,有如下区别: 1. throws 出现在方法声明上,而throw通常都出现在方法体内。 2. throws 表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某个异常对象。
0 notes
jianfazhang · 5 years ago
Photo
Tumblr media
HTTPS 的整个通信过程可以分为两大阶段:证书验证和数据传输阶段,数据传输阶段又可以分为非对称加密和对称加密两个阶段。具体流程按图中的序号讲解。
1.客户端请求 HTTPS 网址,然后连接到 server 的 443 端口 (HTTPS 默认端口,类似于 HTTP 的80端口)。
2.采用 HTTPS 协议的服务器必须要有一套数字 CA (Certification Authority)证书,证书是需要申请的,并由专门的数字证书认证机构(CA)通过非常严格的审核之后颁发的电子证书 ( (当然了是要钱的,安全级别越高价格越贵))。颁发证书的同时会产生一个私钥和公钥。私钥由服务端自己保存,不可泄漏。公钥则是附带在证书的信息中,可以公开的。证书本身也附带一个证书电子签名,这个签名用来验证证书的完整性和真实性,可以防止证书被篡改。
3.服务器响应客户端请求,将证书传递给客户端,证书包含公钥和大量其他信息,比如证书颁发机构信息,公司信息和证书有效期等。Chrome 浏览器点击地址栏的锁标志再点击证书就可以看到证书详细信息。
4.客户端解析证书并对其进行验证。如果证书不是可信机构颁布,或者证书中的域名与实际域名不一致,或者证书已经过期,就会向访问者显示一个警告,由其选择是否还要继续通信。就像下面这样:
如果证书没有问题,客户端就会从服务器证书中取出服务器的公钥A。然后客户端还会生成一个随机码 KEY,并使用公钥A将其加密。
5.客户端把加密后的随机码 KEY 发送给服务器,作为后面对称加密的密钥。
6.服务器在收到随机码 KEY 之后会使用私钥B将其解密。经过以上这些步骤,客户端和服务器终于建立了安全连接,完美解决了对称加密的密钥泄露问题,接下来就可以用对称加密愉快地进行通信了。
7.服务器使用密钥 (随机码 KEY)对数据进行对称加密并发送给客户端,客户端使用相同的密钥 (随机码 KEY)解密数据。
8.双方使用对称加密愉快地传输所有数据。
好了,以上就是 HTTPS 的原理详解了,如此精美的图搭配这么详细的过程解析,你再搞不懂就说不过去了吧哈哈。
4、总结
再来总结一下 HTTPS 和 HTTP 的区别以及 HTTPS 的缺点吧:
HTTPS 和 HTTP 的区别:
最最重要的区别就是安全性,HTTP 明文传输,不对数据进行加密安全性较差。HTTPS (HTTP + SSL / TLS)的数据传输过程是加密的,安全性较好。
使用 HTTPS 协议需要申请 CA 证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。
HTTP 页面响应速度比 HTTPS 快,这个很好理解,由于加了一层安全层,建立连接的过程更复杂,也要交换更多的数据,难免影响速度。
由于 HTTPS 是建构在 SSL / TLS 之上的 HTTP 协议,所以,要比 HTTP 更耗费服务器资源。
HTTPS 和 HTTP 使用的是完全不同的连接方式,用的端口也不一样,前者是 443,后者是 80。
HTTPS 的缺点:
在相同网络环境中,HTTPS 相比 HTTP 无论是响应时间还是耗电量都有大幅度上升。
HTTPS 的安全是有范围的,在黑客攻击、服务器劫持等情况下几乎起不到作用。
在现有的证书机制下,中间人攻击依然有可能发生。
HTTPS 需要更多的服务器资源,也会导致成本的升高。
0 notes
jianfazhang · 5 years ago
Text
HTTP图解
Tumblr media
Http请求报文:请求方法、请求URI、协议版本、可选的请求首部字段(包含请求和响应的各种条件和属性的各类首部)和内容实体组成。
Http响应报文:协议版本、状态码、状态码的原因短语、响应首部字段和实体主体组成。
一共有四种首部:通用首部、请求首部、响应首部和实体首部。
Http是一种无状态协议,自身不具备保存之前发送过的请求或者响应。
http支持的方法如图所示。
http是持久连接,只要任意一端没有明确提出断开连接,则保持TCP连接状态。
持续链接使得http请求以管线化方式发送,而不需要发送一个请求,得到一个响应后再发送下一个请求,可以让请求更快结束。
Cookie技术通过在请求和响应报文中写入cookie信息来控制客户端的状态。Cookie会根据从服务器端发送响应报文内的一个叫做Set-cookie的首部字段信息,通知客户端保存Cookie。当下次客户端再往服务器发送请求时候。客户端会自动在请求报文中加入Cookie信息,服务器发现客户端发送来的Cookie信息以后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。
0 notes
jianfazhang · 5 years ago
Text
访问修饰符
Tumblr media
1. 属性通常使用private封装起来 2. 方法一般使用public用于被调用 3. 会被子类继承的方法,通常使用protected 4. package用的不多,一般新手会用package,因为还不知道有修饰符这个东西 再就是作用范围最小原则 简单说,能用private就用private,不行就放大一级,用package,再不行就用protected,最后用public。 这样就能把数据尽量的封装起来,没有必要露出来的,就不用露出来了
0 notes
jianfazhang · 5 years ago
Text
内部类分为四种:1.非静态内部类-2.静态内部类-3.匿名类-4.本地类
非静态内部类可以直接在一个类里面定义;比如:战斗成绩只有在一个英雄对象存在的时候才有意义所以实例化BattleScore 的时候,必须建立在一个存在的英雄的基础上。语法: new 外部类().new 内部类(),作为Hero的非静态内部类,是可以直接访问外部类的private实例属性name的。
在一个类里面声明一个静态内部类。比如敌方水晶,当敌方水晶没有血的时候,己方所有英雄都取得胜利,而不只是某一个具体的英雄取得胜利。 与非静态内部类不同,静态内部类水晶类的实例化 不需要一个外部类的实例为基础,可以直接实例化。语法:new 外部类.静态内部类(); 因为没有一个外部类的实例,所以在静态内部类里面不可以访问外部类的实例属性和方法。除了可以访问外部类的私有静态成员外,静态内部类和普通类没什么大的区别
匿名类指的是在声明一个类的同时实例化它,使代码更加简洁精练,通常情况下,要使用一个接口或者抽象类,都必须创建一个子类。有的时候,为了快速使用,直接实例化一个抽象类,并“当场”实现其抽象方法。既然实现了抽象方法,那么就是一个新的类,只是这个类,没有命名。这样的类,叫做匿名类 ,但是匿名类想要使用外部的局部变量, 外部的局部变量必须修饰为final 。
本地类可以理解为有名字的匿名类。内部类与匿名类不一样的是,内部类必须声明在成员的位置,即与属性和方法平等的位置。本地类和匿名类一样,直接声明在代码块里面,可以是主方法,for循环里等等地方
0 notes
jianfazhang · 5 years ago
Text
抽象类和接口
抽象类可以有抽象方法也可以没有抽象方法,但是必须要有关键字abstract。 一旦一个类被声明为抽象类,就不能够被直接实例化。
有一种特殊情况: 通常情况下,要使用一个接口或者抽象类,都必须创建一个子类;有的时候,为了快速使用,直接实例化一个抽象类,并“当场”实现其抽象方法。 既然实现了抽象方法,那么就是一个新的类,只是这个类,没有命名。这样的类,叫做匿名类
函数式接口(Functional Interface) 是学习Java8 lambda表达式的关键 什么是函数式接口? 定义: 任何接口如果只包含**唯一**一个**抽象方法,那么它就是一个函数式接口 这样就解决了上面的问题----对于函数式接口,我们可以通过lambda表达式来创建该接口的对象 。
接口中只能有两类方法,一种是抽象方法,另一个就是默认方法default。
抽象类的子类必须实现抽象类的抽象方法
区别1:子类只能继承一个抽象类,不能继承多个;子类可以实现多个接口 区别2:抽象类可以定义public,protected,package,private;静态和非静态属性;final和非final属性。但是接口中声明的属性,只能是public;静态;final的,即便没有显式的声明 。
0 notes
jianfazhang · 5 years ago
Text
java-final关键字
final修饰类的时候,此类不能被继承。
final修饰方法的时候,此方法不能被重写
final修饰基本类型变量,表示该变量只有一次赋值机会
final修饰引用,引用被修饰成final,表示该引用只有1次指向对象的机会
常量指的是可以公开,直接访问,不会变化的值
0 notes
jianfazhang · 5 years ago
Text
Super关键字
作为子类,无论如何都是首先会调用父类的构造方法,默认情况下,会首先调用父类的无参构造方法,但是 当父类没有无参构造方法的时候( 提供了有参构造方法,并且不显示提供无参构造方法),子类就会抛出异常,因为它尝试去调用父类的无参构造方法。 这个时候,子类应该必须通过super去调用父类声明的,存在的,有参的构造方法。
0 notes
jianfazhang · 5 years ago
Video
tumblr
个人Pr制作,大学毕业。
0 notes
jianfazhang · 5 years ago
Text
功不唐捐
这一两个星期里,各地的大学都有毕业的班次,都有得多的毕业生离开学校去开始他们的成人事业。 学生的生活是一种享有特殊优待的生活,不劣稚一点,不脸吵闹闹,社会都能纵容他们,不肯严格的要他们负行为的责任。 现在他们要撑起自己的肩膀来挑他们自己的担子了。在这个国难最紧急的年头,他们的担子真不轻! 我们祝他们的成功,同时也不忍不依据自己的经验,赠他们几句送行的赠言,虽未必是救命毫毛,也许做个防身的锦囊罢! 你们毕业之后,可走的路不出这几条: 绝少数的人还可以在国内或国外的研究院继续做学术研究; 少数的人可以寻着相当的职业;此外还有做官,办党,革命三条路; 此外就是在家享福或者失业亲居了。 走其余几条路的人,都不能没有堕落的危险。堕落的方式很多,总括起来,约有这两大类: 第一是容易抛弃学生时代求知识的欲望。 你们到了实际社会里,往往学非所用,往往所学全无用处,往往可认完全用不着学问,而一样可认胡乱混饭吃,混官吃。 在这种环境里即使向来抱有求知识学问的人,也不免心灰意懒,把求知的欲望渐渐冷淡下去。 况且学问是要有相当的设备的;书籍,实验室,师友的切磋指导,闲暇的工夫,都不是一个平常要糊口养家的人的能容易办到的。没有做学问的环境,又谁能怪我们抛弃学问呢? 第二是容易抛弃学生时代理想的人生的追求。 少年人初次和冷酷的社会接触,容易感觉理想与事实相去太远,容易发生悲观和失望。多年怀抱的人生理想,改造的热诚,奋斗的勇气,到此时候,好像全不是那么一回事了。 渺小的个人在那强烈的社会炉火里,往往经不起长时期的烤炼就熔化了,一点高尚的理想不久就幻灭了。 抱着改造社会的梦想而来,往往是弃甲抛兵而走,或者做了恶势的俘虏。你在那牢狱里,回想那少年气壮时代的种种理想主义,好像都成了自误误人的迷梦! 从此以后,你就甘心放弃理想人生的追求,甘心做现在社会的顺民了。 要防御这两方面的堕落,一面要保持我们求知识的欲望,一面要保持我们对人生的追求。 有什么好方法子呢?依我个人的观察和经验,有三种防身的药方是值得一试的。 第一个方子只有一句话:“总得时时寻一两个值得研究的问题”。 问题是知识学问的老祖宗。古往今来一切知识的产生与积聚,都是因为要解答问题,要解答实用上的困难和理论上的疑难。 所谓“为知识而求知识”,其实也只是一种好奇心追求某种问题的解答,不过因为那种问题的性质不必是直接应���的,人们就觉得这是无所谓的求知识了。 我们出学校之后,离开了做学问的环境,如果没有一二个值得解答的问题在脑子里盘旋,就很难保持求学问的热心。 可是,如果你有了一个真有趣的问题逗你去想他,天天引诱你去解决他,天天对你挑衅你无可奈何他,这时候,你就会同恋爱一个女子发了疯一样,坐也坐不下,睡也睡不安,没工夫也得偷出工夫去陪她,没钱也得缩衣节食去巴结她。没有书,你自会变卖家私去买书;没有仪器,你自会典押衣物去置办仪器;没有师友,你自会不远千里去寻师访友。 你只要有疑难问题来逼你时时用脑子,你自然会保持发展你对学问的兴趣,即使在最贫乏的知识中,你也会慢慢的聚起一个小图书馆来,或者设置起一所小试验室来。 所以我说,第一要寻问题。脑子里没有问题之日,就是你知识生活寿终正寝之时! 古人说,“待文王而兴者,凡民也。若夫豪杰之士,虽无文王犹兴”。 试想伽利略 ( GALIEO )和牛顿( NEWTON )有多少藏书?有多少仪器?他们不过是有问题而己。 有了问题而后他们自会造出仪器来解决他们的问题。没有问题的人们,关在图书馆里也不会用书,锁在试验室里也不会有什么发现。 第二个方子也只有一句话:“总得多发展一点非职业的兴趣”。 离开学校之后,大家总是寻个吃饭的职业。可是你寻得的职业未必就是你所学的,未必是你所心喜的,或者是你所学的而和你性情不相近的。 在这种情况之下,工作往往成了苦工,就感觉不到兴趣了。为糊口而做那种非“性之所近而力之所能勉”的工作,就很难保持求知的兴趣和生活的理想主义。 最好的救济方法只有多多发展职业以外的正当兴趣与活动。 一个人应该有他的职业,也应该有他非职业的玩艺儿,可以叫做业余活动。 往往他的业余活动比他的职业还更重要,因为一个人成就怎样,往往靠他怎样利用他的闲暇时间。 他用他的闲暇来打麻将,他就成了个赌徒;你用你的闲暇来做社会服务,你也许成个社会改革者;或者你用你的闲暇去研究历史,你也许成个史学家。你的闲暇往往定你的终身。 英国十九世纪的两个哲人,弥儿( J.S.MILL )终身做东印度公司的秘书,然而他的业余工作使他在哲学上,经济学上,政治思想史上都占一个很高的位置;斯宾塞( SPENCER )是一个测量工程师,然而他的业余工作使他成为前世纪晚期世界思想界的一个重镇。 古来成大学问的人,几乎没有一个不善用他的闲暇时间的。特别在这个组织不健全的中国社会,职业不容易适合我们的性情,我们要想生活不苦痛不堕落,只有多方发展。 有了这种心爱的玩艺,你就做六个钟头抹桌子工作也不会感觉烦闷了,因为你知道,抹了六个钟的桌子之后,你可以回家做你的化学研究,或画完你的大幅山水,或写你的小说戏曲,或继续你的历史考据,或做你的社会改革事业。 你有了这种称心如意的活动,生活就不枯寂了,精神也就不会烦闷了。 第三个方法也只有一句话:“你得有一点信心”。 我们生当这个不幸的时代,眼中所见,耳中所闻,无非是叫我们悲观失望的。特别是在这个年头毕业的你们,眼见自己的国家民族沉沦到这步田地,眼看世界只是强权的世界,望极天边好像看不见一线的光明。在这个年头不发狂自杀,已算是万幸了,怎么还能够保持一点内心的镇定和理想的信任呢? 我要对你们说:这时候正是我们要培养我们的信心的时候!只要我们有信心,我们还有救。 古人说:“信心( FAITH )可以移山。” 又说:“只要工夫深,生铁磨成绣花针。” 你不信吗?当拿破仑的军队征服普鲁士,占据���林的时候,有一位教授叫做费希特( FICHTE )的,天天在讲堂劝他的国人要有信心,要信仰他们的民族是有世界的特殊使命的,是必定要复兴的。费希特死的时候,谁也不能预料德意志统一帝国何时可以实现。然而不满五十年,新的统一的德意志帝国居然实现了。 一个国家的强弱盛衰,都不是偶然的,都不能逃出因果的铁律的。我们今日所受的苦痛和耻辱,都只是过去种种恶因种下的恶果。我们要收获将来的善果,必须努力种现在新因。一粒一粒的种,必有满仓满屋的收,这是我们今日应有的信心。 我们要深信:今日的失败,都由于过去的不努力。我们要深信:今日的努力,必定有将来的大收成。 佛典里有一句话:“福不唐捐”。唐捐就是白白的丢了。我们也应该说:“功不唐捐”!没有一点努力是会白白的丢了的。在我们看不见想不到的时候,在我们看不见的方向,你瞧!你下的种子早已生根发叶开花结果了! 你不信吗?法国被普鲁士打败之后,割了两省地,赔了五十万万法朗的赔款。这时候有一位刻苦的科学家巴斯德( PASTEUR )终日埋头在他的化学试验室里做他的化学试验和微菌学研究。 他是一个最爱国的人然而他深信只有科学可以救国。他用一生的精力证明了三个科学问题: 每一种发酵作用都是由于一种微菌的发展; 每一种传染病都是一种微菌在生物体内的发展; 传染病的微菌,在特殊的培养之下可以减轻毒力,使他们从病菌变成防病的药苗。 这三个问题在表面上似乎都和救国大事业没有多大关系。 然而从第一个问题的证明,巴斯德定出做醋酿酒的新法,使全国的酒醋业每年减除极大的损失。 从第二个问题的证明巴斯德教全国的蚕丝业怎样选种防病,教全国的畜牧农家怎样防止牛羊瘟疫,又教全世界怎样注重消毒以减少外科手术的死亡率。 从第三个问题的证明,巴斯德发明了牲畜的脾热瘟的疗治药苗,每年替法国农家减除了二千万法朗的大损失;又发明了疯狗咬毒的治疗法,救济了无数的生命。 所以英国的科学家赫胥黎 ( HUXLEY )在皇家学会里称颂巴斯德的功绩道:“法国给了德国五十万万法朗的赔款,巴斯德先生一个人研究科学的成就足够还清这一笔赔款了”。 巴斯德对于科学有绝大的信心,所以他在国家蒙奇辱大难的时候,终不肯抛弃他的显微镜与试验室。他绝不想他有显微镜底下能偿还五十万万法朗的赔款,然而在他看不见想不到的时候,他已收获了科学救国的奇迹了。 朋友们,在你最悲观失望的时候,那正是你必须鼓起坚强的信心的时候。你要深信:天下没有白费的努力。成功不必在我,而功力必不唐捐。
0 notes
jianfazhang · 5 years ago
Text
增强型for循环
注:增强型for循环只能用来取值,却不能用来修改数组里的值
int values [] = new int[]{18,62,68,82,65,9};        
//常规遍历  for (int i = 0; i < values.length; i++) {            int each = values[i];            System.out.println(each);        }       
//增强型for循环遍历  for (int each : values) {            System.out.println(each); //只能取值,不能改变值。
0 notes