原来Java世界里也有这么多精彩的故事,学Java真有趣!

大千世界,无所不有。这世上不光有人类世界,还有咱们的java世界。
今天就由我这个实习导游带领你们了解了解咱们的java世界奇妙之处。

  • 有一种暖男叫catch,有一种真爱叫try---catch,世上最真情的爱恋就是你在try我在catch,无论你发什么脾气,我都静静的接受,默默地处理,不管你有什么错,我都会原谅你,爱着你。
  • 有一种懒汉员工叫throws,甭管有啥事都往外抛,做错事了就交给上级擦屁股,上级不会再给上级,给到老板为止,老板也不会那就gg了,倒闭吧。
  • 有一种听话员工叫循环,你让他做几遍工作他就做几遍,让他不睡觉一直加班他还就真敢做,没有老板break的允许是断然不敢停下的。
  • 有一种霸道总裁叫finally,只要他想做的事就必须要做到,就算是return想要阻挡都不行,除非死亡,否则他会不顾一切去得到他的猎物。
  • 有一种垃圾回收站叫finallize,他和我们的霸道总裁finally的名字非常相似,但是千万不能叫错了,不然后果很严重的。重要的事情说三遍,不能叫错,不能叫错,千万不能叫错!
  • 有一种江湖叫类,江湖里有了人就叫对象,人有了技能就叫方法。
  • 有一本取名法典叫做标识符,专门用来给类,方法和变量取名字的,法典里规定了必须以字母,下划线 _ 或者美元 $ 符号为开头才行,而且对大小写还相当敏感,并且绝对不能是关键字,像class,catch那种是万万不能用来取名的。
  • 法典里有一种取名规则叫驼峰规则,给方法和变量取名的时候第一个单词必须小写,第二个、第三个单词首字母大写,此乃驼峰规则。当然了,如果是给类取名的话,那就是每个单词的首字母都得大写,别问我为什么,就是这么牛。

看到这里可能会有一些人有疑惑了,什么是变量呢?

别着急,我来告诉你。

变量有三兄弟,分为老大静态变量、老二成员变量和老三局部变量。

老大呢,比较无私,把自己给共享出去了;老二比较顽皮,混迹于江湖,常在类与方法中自由出入;至于老三嘛,乖乖仔一个,喜欢和方法在一起玩耍,当方法消失了,老三也会跟着方法一起殉葬。

那你们知道为什么老大这么无私吗,因为老大被 共享掌门人static所影响了,但凡听过static讲课的变量都会被其所影响,愿意将自己共享出去。

这个static可是拥有一个很庞大的静态家族体系,有静态代码块,优先于普通代码块先执行;静态内部类,可以直接被外部类调用;静态方法,不需要对象就可以被该类调用。

Static家族都是随着类的加载而加载,优先于对象存在的。所以在static方法中不能使用this关键字,为什么呢?因为this代表当前对象的一个引用,简而言之就是static出现的时候this还没出生呢,所以this就不能在static方法中使用。

有一个老顽固叫final,被final认定的事物就不能改变了,谁敢乱动跟谁急,小伙伴们都怕他,尤其是类,遇上final就要被结扎,从此不再有子类。真是一个让人悲伤流泪的故事。变量遇上他,从此不再长身高。方法遇上他,从此不再被子类重写。所以呢,对于那些不想再对自我进行改变的方法,变量就可以去找final了。

有一种思想叫做万物皆对象!对象怎么来的呢?在程序员爸爸眼中那就是new一个就有了。

 

看到这是不是有个大胆的想法,是不是想到了自己还是一条单身狗,迫切的给自己new一个对象出来呀。大胆的new吧,骚年,new完你还是一条单身狗。对象依然是类的对象,用来调用方法和成员变量滴。

一个创建对象的例子:

<ignore_js_op>

基本上每个类都至少有一个构造方法,除了匿名内部类,如果一个类没有编写任何一个构造方法,那么类就会自带一个空参构造。如果还有一个有参构造,那么在创建对象的时候就能直接初始化值,那叫一个方便啊。

构造方法示例:

<ignore_js_op>

类长大了也该结婚生子了,类的小孩就叫子类,这名字通俗易懂吧。子类可以通过extends继承父类的方法和属性,就好像人类当中子女可以继承父母的财产一样。有些子类比较独立,不甘平庸,这时候他们就自己增加了一些属性和方法,更厉害的子类不仅自创方法,而且还能将父类的方法进行改良变得更加强大,也就是方法的重写。

继承与方法重写的例子:

<ignore_js_op>

不过呢,父类的构造方法子类不能继承,子类只能通过super关键字调用父类构造方法。就好比父亲有一套房子,但是父亲还要继续住,不能给儿子,就给了儿子一把钥匙,儿子也可以经常回来住。

在我们java中,一个子类只能继承一个父类,这一点和人类一样,一个儿子只有一个亲爹。啥?你问我能不能有干爹? 那当然可以有了,接口就是子类的干爹,而且一个子类可以有多个接口,子类名implements接口名,接口名就能实现多个接口了

有一种保密叫封装,封装可以将该类的某些信息隐藏在类的内部,除了本类不允许其他类直接访问,毕竟谁都有个小秘密是不想让人知道的。

那么怎么封装呢?简单,只需要在属性最前面加上private就行了。

封装属性示例:

<ignore_js_op>

如果想要修改和查看封装后的属性,那就需要通过get(),set()方法了。

不是特别重要的数据就可以使用protected修饰,这样子类还能在不同包中访问,还有两张访问权限修饰符是public和default(默认不写),public比较热情好客,谁都能访问他。

四种权限修饰符:

<ignore_js_op>

封装可以隐藏实现细节,就好比人类有一台电视机,人类只需要知道怎么使用,并不用了解电视机构成元件;而且还挺安全的,因为别人看不到啊,哈哈哈!

有一种照骗叫做多态,举个栗子吧:听说最近人类挺流行网恋的,然而没有线下见面谁也不知道手机那一端的人长啥样啊,视频又太模糊了看不清,于是照骗出现了,人类将照片ps的美美哒,大脸盘变成瓜子脸,小眼睛变大眼睛,各种美白磨皮,然后再把照片发给对方来吸引对方,终于关系进一步发展到了奔现的程度了,然后就没有然后了。 这个故事告诉我们在没有真正见到对方之前,你永远也不知道手机另一端的对方长啥样。多态也是一个道理,左边一个样,右边又是一个样。

多态存在有3个必要条件:1.要有继承 2.要有方法重写 3.父类引用指向子类对象

多态又分两种形式,一种是向上转型,格式是:父类名 父类对象 = new 子类名(); 向上转型对象不能使用子类新增的成员变量和方法;

还有一种是向下转型,格式是:子类名 子类对象= (父类名) 父类对象; 向下转型对象既能调用父类方法也能调用子类本身的方法和属性。

对此我有一个口诀分享给大家:(适用于向上转型)

多态的成员变量和方法:编译看左边(父类),运行看右边(子类);

多态的成员方法:           编译看左边(父类),运行看右边(子类)

进行向下转型时一定要先来个向上转型,不然就会出现类型转换异常---ClassCastException。

多态的例子:

大家都知道梵高吧,人类当中有名的抽象派画家,巧了,咱java家族里也有一种类叫做抽象类。抽象类是一为严厉的父类,他的抽象方法没有方法体,他为子类提供了一个通用模板,可以避免子类设计的随意性,子类必须重写抽象父类的方法。

抽象方法和抽象类都必须用abstract来修饰,而且抽象类也可以没有抽象方法。

抽象类的例子:

<ignore_js_op>

提到抽象方法就不得不再说一下接口了,接口中所有方法都是抽象的,所有变量都默认使用public static final修饰,也就是说接口中的变量就是静态常量了,值不能被修改了。

接口的例子:

<ignore_js_op>

最后再给大家安利个美好的画面,人类流传着睡美人的故事,公主碰到纺锤让诅咒生效,并在城堡里一直昏睡等待王子的亲吻将她唤醒。而我们java世界中就经常有这么一幅画面:

有一种纺锤叫wait(),有一种吻叫notify()。

有一位美丽的线程公主,她遇上了wait(),除非有王子吻醒她,否则她将一直处于昏睡状态,不久线程王子出现了,王子带着notify()将公主唤醒了。从此公主和王子就在一起过着幸福美好的生活了。

怎么样?看了这么多,觉得咱java世界相当有趣吧,是不是还想继续深入探索呀?

本文来源:上海尚学堂,逗逼码农-当你老了:
https://www.shsxt.com/it/java/1258.html

这是尚学堂学员原创文章,感谢尚学堂亲爱的学员,你真是程序员界里的韩寒。转载请注明出处。

原文地址:https://www.cnblogs.com/shsxt/p/9480504.html

时间: 2024-11-06 22:19:11

原来Java世界里也有这么多精彩的故事,学Java真有趣!的相关文章

Java世界里的BIO,NIO,AIO

作为一名程序员,io知识是必不可少,其实一直在和io打交道,要么显示要么隐含给了操作系统,故做下关于io的记录.说io之前呢,先介绍什么叫同步异步丶阻塞非阻塞 1.  同步异步丶阻塞非阻塞 1.1 同步是指发出一个请求,在没有得到结果之前该请求就不返回结果,请求返回时,也就得到结果了.比如我经常用烧水壶烧水,没烧开前一直盯着水壶(等水开). 1.2 异步是指发出一个请求后,立刻得到了回应,但没有返回结果,这时我们可以再处理别的事情(发送其他请求),所以这种方式需要我们通过状态主动查看是否有了结果

如果上天再给我一次机会,我会这样学Java

回头看看, 我进入Java 领域已经快15个年头了, 虽然学的也一般, 但是分享下我的心得,估计也能帮大家少走点弯路. [入门] 我在2001年之前是C/C++阵营, 有C和面向对象的基础, 后来转到Java ,发现没有指针的Java真是好简单, 另外Java 的类库好用的让人哭啊. 后来我就看<Thinking in Java> ,< Java 核心技术 >, 感觉也不吃力. 如果我之前没学过别的语言,或者半路出家转到计算机行业, 我不会先看上面那两本, 相反我会选<Hea

学java新手怎么办

当下技术型人才时代,有一技之长的人才显然更受企业的青睐.IT行业发展的火热,作为IT行业中的朝阳行业java行业发展的更是如火如荼,愈来愈多的人看到了java发展的美好的未来,纷纷开始转战学java,其中不乏java新手,那么学java新手怎么办呢?  本人于2007年尚学堂毕业,目前在某大型国企担任JAVA驾构师,致力于帮助更多新手学习编程,分享视频,希望能帮助喜欢JAVA的朋友.有需要的可以联系我QQ:2878908695 学java新手怎么办? 1. java兴趣必不可少 兴趣和工作结合是

如何从零开始学Java编程

Java语言的学习开始,很多同学不知道从哪入手?如果你也想知道如何从零开始学Java?怎样学Java最有效? 虽然Java面象对象很多东西都是被封装好的直接用,相对其他语言没那么复杂,但是学的东西也没有那么的so easy,总之如果你是真想做开发,就先沉下心用心把基础打好,不要先老想着因为软件行业有市场,所以要进来分一杯羹的这种急躁心态. 另外,在编程这个行业,技术更新速度快,所以一定要具备相应的自学能力及自学意识,不然即使现在入职了Java相关的工作,不主动学习的话,说不定几年后你就跟不上技术

零基础而且英语不好可以学java吗?

以前很多人都不知道有程序员这个岗位,现在随着互联网的发展,越来越多的人意识到当程序员是一个很好的选择.导致每年想学java的人越来越多,其中许多人都是零基础 零基础可以学java吗? 可以的.谁都是从零基础开始学java的,你见过有人出生就会写编程的嘛? 讲道理,如果你对编程真的一点都不懂,完全零认识的话,你会有一个好的开始.就像一张白纸,你可以决定是在上面写字还是画画.许多有了一定编程基础的人,学一门新的编程有时候会比零基础更加困难,因为他已经有了自己的思维了. 首先在学java之前你需要有编

注入安卓进程,并hook java世界的方法及改进

注入安卓进程,并hook java世界的方法 说明: 安卓系统的可执行对象有两个世界,一个是Linux Native世界,一个是Java世界.两个世界能够通过jvm产生交互,具体来说就是通过jni技术进行互相干涉.但是在正常情况下,只能在Java世界通过jni调用native方法,二native不能在没有任何java上的支持下干涉java世界. 在一些应用中,我们需要对一个app的java世界进行干涉.再说到linux上的进程注入技术,已不用我多讲,但是传统的linux进程注入技术在安卓上只能进

使用Cydia Substrate 从Native Hook Android Java世界

这里介绍了如何使用Cydia Substrate Hook安卓Java世界.这篇文章介绍如何从Native中Hook 安卓Java世界. 手机端配置见之前文章. 一.建立工程 建立一个Android工程.不需要创建默认的Activity.修改AndroidManifest.xml如下: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.cyd

JAVA世界

这算是我的的第一篇文章了.以前还真不怎么喜欢写些东西.可能最近有时间了吧!进入JAVA世界已有二年多时间了.记得刚进北大青鸟时那种热情是无法用言语去表达.在java 的世界是这样的.它把一切东西看作对象凡是这一类对象都抽象成一个class 每一个对象中都各自的属性和动作(也就是方法) 例如衣服以及衣服上扭扣都可以看作一个对象.只是它们只有各自属性没有方法罢了!其实我们在写软件时返回到前台页面列表中的一行行数据就是一个个对象而已! 我还记得第一次进入北大青鸟第一课时老师所说的话:"程序设计并不是那

Cocos2d-js官方完整项目教程翻译:六、添加Chipmunk物理引擎在我们的游戏世界里

添加Chipmunk物理引擎在我们的游戏世界里         一.简介                   cocos2d JS能给我们力量来创造令人印象深刻的游戏世界.但缺乏某种现实.          虽然我们可以做复杂的计算,使游戏世界更真实的,但有另一个选择          它可以缓解我们的生活.答案是物理引擎.          物理引擎提供了重力,碰撞检测和物理模拟,可以使我们的游戏世界看起来更真实.          在本教程中,我们将介绍的ChipMunk的物理引擎进入我们的