34岁!100天!学会Java编程(Day12)——知识点串连

敲黑板,划重点

知识点串连

前面开发项目时,主要依靠的是《手把手教你学Java》中零散的知识点,以及将《Java从入门到精通》当作开发词典来进行查询。晚上将后者从头到尾过一遍,对知识点进行查漏补缺,拣主要的记录如下:

  1. 变量的作用域。作用域静态(全局)变量>成员变量>局部变量。但是在类方法的局部域中,同名局部变量覆盖成员变量,如果想要操作同名成员变量,需要使用关键字this。其中形参也可看作局部变量,会覆盖同名成员变量;成员变量在对象创建后才能被对象调用,而静态变量在类被加载后,就可以被类名调用。
  2. 运算符优先级。总共分为15级:圆括号>正负号>一元运算符>乘除>加减>移位运算>比较大小>比较是否相等>按位与>按位异或>按位或>逻辑与>逻辑或>三元运算符>赋值运算符。总结起来,不确定优先级的情况就用圆括号圈起来,赋值运算的等级最低。
  3. 数据类型的转换分五种。
    (1)按以下优先级,则数据类型可以隐式自动转换,byte<short<int<long<float<doublue。
    (2)反向进行则需要进行强制转换。
    (3)char类型和String类型不包含在其中,不能简单进行强制转换,需特别对待。需特别注意,char变量有两种赋值方式,一种是char cr=5;另一种是char cr='5'。前者cr等于ASCII码表中,序号5所对应的字符ENQ,意思是请求字符;后者cr就等于‘5’。所以语句char cr=56;可以执行,运算结果是cr等于序号为56的字符‘8’,而语句char cr='56'则会因为超过一个字符而报错。因此对应char与int的强制转换就有两种方式,如果char a=56,则char与int可以直接加圆括弧强制转换。而如果char a='8',char类型强制转换为int,输出的是字符所对应的ASCII十进制编码,反之亦然。
    (4)上述类型与String类型也不能强制转换,以int2String为例,可以使用String.valueOf(int a)方法,返回一个String值;String2int可以使用包装类Integer的方法Integer.valueOf(String str).intValue(),返回一个int值。同理,char2String可以使用String.valueOf(char cr)方法,String2char可以使用String.charAt(int index),String2char_array可以使用String.toCharArray()方法。
    (5)父类与子类对象的转换,子类可隐式赋值给父类,称为向上转换;父类可有条件地强制转换,然后赋值给子类,称为向下转换。
  4. 日期与时间的获取。
    (1)创建一个Date对象,然后用String.format(格式转换符%,Date对象),返回一个期望格式的字符串日期和时间。
    (2)使用System.currentTimeMillis()方法,返回一个当前时间(毫秒milliseconds)的long值。
  5. 数学运算。
    灵活运用Math类,可以获得常用的一元函数运算值(三角函数、指数函数、幂函数、对数函数、取整函数、绝对值函数),二元函数运算值(pow指数函数,二元最值函数)等。
  6. 随机数获取。
    (1)使用Math.random()方法,获得一个介于[0,1)的符合平均分布函数的double型小数。在这个小数的基础上,可以转换成任意整数[m,n)之间的随机整数。
    (2)使用Random类中的若干方法,获得平均分布的整数、小数、布尔值。除此以外,还可以获得符合高斯分布的数。
  7. 数组操作。
    (1)多维数组的创建。例如int[][][] abc=new int[10][10][10];
    (2)数组的遍历。多维循环与foreach语句。
    (3)数组的复制。Arrays.copyOf()和Arrays.copyOfRange()方法。
    (4)数组元素的查询。Arrays.binarySearch()方法。
    (5)数组的排序。可以使用Arrays.sort()方法。当然,也可以使用经典的排序算法,自己编写可调用的函数,包括:冒泡排序,直接选择排序,反转排序等。
  8. 几个修饰变量和方法的关键字。如下表:
权限修饰 常量修饰 静态修饰
private,protected,public final static

使用规则包括:
(1)被private修饰的成员变量和方法,不能被类对象显示调用和子类对象内部调用。同理,子类方法不能重写父类private方法。
(2)被protected修饰的成员变量和方法,不能被类对象显示调用,但可以被子类对象内部调用。
(3)被public修饰的成员变量和方法,以上权限都有。
(4)子类同名方法(不管重写还是重载),权限一定要大于等于上级父类。
(5)被final修饰的变量为常量;被final修饰的方法不可被子类重写;被final修饰的类不可被继承。
(6)被static修饰的变量为全局变量,在类被加载时就被创建;被static修饰的方法,为全局方法。同时不能在其内部调用该类的动态成员变量和动态方法;static不被用于修饰外部类,但可用于修饰内部类。静态内部类创建对象不需要外部类对象,同时静态内部类只能访问静态的外部类变量和方法。
(7)静态变量和成员的语法规则,对于public的静态变量和方法,通常直接使用(类名+静态变量)和(类名+静态方法)调用,而不是使用对象+变量/方法的方式(这种方法可行,但不被提倡)。

  1. 类的基本特点:封装、继承、多态。
    (1)封装是为了保护成员变量,但是也有扩展成员变量使用范围的静态成员变量。
    (2)继承最初是为了复用代码,后来是因为树状结构不仅易于人类理解,而且可以拓展出多态这样可爱的特性。
    (3)多态要实现,除了树状结构,最核心的技术是必须用到方法重写的概念。关于多态使用场景,举个例子,编一个篮球赛程序让一个球员对象投篮,只需要主方法中调用一个球员对象投篮,具体到子一层对象后卫、前锋、中锋,子二层对象科比、詹姆斯、奥尼尔在投篮动作上不同的表现,只需要在具体子类和子子类中使用投篮方法重写修改就行,不需要动主方法。而若是传统的编程方法,则需要在主方法中加入大量的条件分支。
    (4)这里需注意方法重写方法重载的区别。
  2. 继承多态、接口多态、泛型、反射。
    (1)继承多态的核心是方法重写各不相同,但是各方法间可以通过复用父类方法而重用大部分代码;
    (2)接口多态的核心是方法实现各不相同,且各方法间没有可复用的代码,所以方法实现过程完全不同;
    (3)泛型的核心是方法相同,即方法代码相同,但方法操作的具体对象类型不同。
    (4)反射的核心是身份鉴定,在上述三种技术把程序玩懵圈了以后,使出一招ID Identify大招,判断现在程序里运转的到底是TM的什么类型对象。嗯,我猜在判定以后还能造出同类型的分身对象出来,玩6了不逊于孙悟空揪下一把毫毛,变出万子千孙出来。
    11.其他:Swing,并发,TCP,JDBC都大略看了一下,等开发CE项目V2.0的时候再仔细琢磨吧。

参考书目
《Java从入门到精通》

2017-11-8

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

推荐阅读更多精彩内容

  • Win7下如何打开DOS控制台? a:开始--所有程序--附件--命令提示符 b:开始--搜索程序和文件--cmd...
    逍遥叹6阅读 1,586评论 4 12
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,577评论 18 399
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,629评论 0 11
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,066评论 0 62
  • C++ 函数模板 函数模板的声明和模板函数的生成 1.函数模板的声明 函数模板可以用来创建一个通用的函数,以支持多...
    yslmyr阅读 319评论 0 0