干货分享,java学习笔记

JAVA给我印象最深的地方就是各种各样的方法。这让我能够更加关注程序要实现什么,而不用花过多的时间纠结于基本的数据结构。

在数据结构课程上,我们要花大量的时间搞明白各种数据结构的实现方法。就拿图来说,我们关注二叉树。二叉树如何生成、如何遍历、如何插入,这些基础但繁琐的代码都是我们自己一行一行的敲出来的,然而JAVA丰富多样的内库为我们省下了很多构建基础数据结构实现代码的时间,让我们能够更加专注于项目而非程序。还是拿图来说,虽然只接触了HashMap,但我已经为JAVA方法的丰富所深深震撼。

构建一个哈希图很简单:

1 HashMap<String, Integer> map = new HashMap<String, Integer>();

这里我们创建了一个Key值为String类型,value值为Int类型的哈希图。

对哈希图的操作,JAVA提供了丰富多彩的方法,我自己最常用到的是下面几个:

1 this.map.containsKey(key) //<是否含有key>
2 this.map.get(key) //<获取key的value>
3 this.map.put(key,value) //<插入数据>
4 this.map.replace(key,value) //<替换数据>

然后就是对HashMap的排序了,一般来说,将排序的结构存储到ArrayList中,实现代码如下:

1 public ArrayList<Entry<String, Integer>> sortmap(HashMap<String, Integer> oldmap){
2 ArrayList<Entry<String, Integer>> list = new ArrayList<Entry<String, Integer>>(oldmap.entrySet());
3 Collections.sort(list, new Comparator<Map.Entry<String, Integer>>(){
4 public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2){
5 return (o2.getValue() - o1.getValue());
6 }
7 });
8 return list;
9 }

这里要说的是HashMap的Entry,代表的是<Key,Value>构成的数据实体,想要使用它,不能简单这样做

1 import java.util.Map;

而要导入这个:

1 import java.util.Map.Entry;

这样就能使用Entry了,排序的实现顺序是这样的:

1 构建ArrayList(通过Entry) --> 使用Collection方法对ArrayList进行排序(通过自定义的Comparator比较器实现)

需要注意的是,对HashMap自身进行排序是没有意义的,我们只能获取排序结果而不能改变HashMap本身的数据结构。

感觉上面的称述有些繁琐了,但自我感觉HashMap这个数据结构的快速与强大,而JAVA自带的方法也让其如虎添翼。

好吧,我应该详细讲讲自己在面向对象方面的收获与感受的。

第一点:无论如何不要将class中的数据设置为public,这是面向对象的大忌。

设置为public就意味着用户可以随意修改你程序的数据,这是十分危险而且不可接收的,老师用一个例子生动的阐述了这一点。

比如,我们现在构造一个很简单的类getVolumn,用户输入长、宽、高,通过这个类计算出长方体的体积。

好的,要实现这个目的,我们需要创建一个volumn对不对?

1 public double volumn;

这样一来,坏了。我们这样:

1 gotVolumn myvol = new getVolumn(); //a,b,c分别为长宽高
2 myvol.a = 100;
3 myvol.b = 1;
4 myvol.c = 2;
5 myvol.calculate();
6 myvol.vol = 300;
7 System.out.println("the volumn is : ",myvol.vol);

这个输出结果是啥?显然是300和原来的结果200根本不相符。所以说,让用户能够直接修改数据是很危险的,而我们应该做的就是将数据封装起来。

最简单的封装当然就是构造所谓的setter()和getter()方法,当然,这是为了让你明白封装的原理,真正写程序的时候,只要满足:

1 private/protected 数据类型 变量名;

就基本OK了,然后通过类的各种方法修改变量的值。其本质就是限制用户对程序的行为,让用户只能通过程序规定的方法获取或修改数据,大大提高程序的安全性。

第二点,继承

为什么要继承?继承可以看成对类功能的扩展。在继承原有类的基础上,进一步扩展。这样的效果就是让一个类能更专注于实现本类的功能,让这个类不太累,从而提升程序的运行效率。

继承的实现方法如下:

1 public class 本类 extends 被继承类{
2 方法1;
3 方法2;
4 }

继承后,需要注意的是构造方法:

1.对于被继承类无参的构造方法,不需要任何特殊操作(实际上是编译器自动生成super());
2.对于被继承类有参的构造方法,需要在本类构造方法的<第一行>调用:
super(参数1,参数2,参数3,···);

继承之后,本类可以直接使用被继承类中的方法和protected数据。

继承方面实际上作为初学者我了解和使用的并不多,但它的让一个类更专注别太忙什么都干的思想确实让我很受用。

第三点、多态,说实在的,多态虽然了解,但我还没有用到一次,水平有限,嘿嘿。

第四点、接口。

如何创建接口呢?

这样就可以创建接口了,接口专注与程序应该实现什么方法,而不是如何实现这些方法,可以说,接口是一个规范。

来一个小小的安利

以看到,接口根本不用管怎么实现方法,甚至连{}都扔了,对于接口中规定的方法,可以这样实现

可以看到,实例化之后,直接使用接口中的方法就OK了,如果多个类实现了接口中的方法,直接对接口实例化,这样就能让代码显得更简洁,同时,这也是多态的一个体现。

到这里,对面向对象的感想就结束了,其实比起面向对象,我更喜欢JAVA丰富多彩的类库和各种各样的方法。

投入JAVA的怀抱之后无法自拔了,使用JAVA不仅提高了写程序的速度,也提高了程序的质量,有面向对象的规范,还有通过构造不同的类实现不同的功能,以及JAVA集成的数据结构,让代码更加简洁高效。

作为一位初学者,我的感触也就这些了,并不多,但觉得是我个人代码能力提高的一个里程碑吧。


学习Java的同学注意了!!!
学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群346942462,我们一起学Java!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容