1 平时工作中,同样工作8小时,高手效率和认识深度要比一般人高很多,
原因: a) 学习习惯好 b) 基础好 c) 学习方法
a) 学习习惯好:
官网,API文档是学习新东西的入门神器,同时百度(google在国内打不开了)是深入学习的最佳获取源
b) 基础好:
数据结构,编译原理,某一门语言的深入理解(可以触类旁通的快速学习别的语言和框架),
常用算法(http://www.kaikeba.com/) 还有E文
这些都是慢功夫,需要持续追加精力来学习,没有一蹴而就的事
c)学习方法:
1 RSS收集器来订阅博客 2 InfoQ国内外同步最新技术 iteye c博客等技术论坛
3 付费/免费视频 4 动手 写文章 在动手 在写文章总结
关于架构设计:
这个框架是什么东西
有哪些特点
适用于哪些业务场景
框架之间的搭配
脑子中有一套设计架构,不合适时知道去改哪里
2 学习语言,精通一门,eg: 精通Java内存模型,在看别的语言内存,基本是一样的,好比学会了捷达,切换到
爱丽舍,是不需要很大磨合的。
3 计算机语言发展史:
4 SUN和Java发展:
SUN: Stanford University Netword,
斯坦福大学和硅谷,Google,Facebook等有着千丝万缕的联系,
SUN公司也开发了Java这套语言(SUN后来被Oracle收购),最开始这套语言是作为SUN公司的一个Green项目
Green项目的应用环境:像电视盒子这样的消费电子产品,需要一套语言中立,跨平台使用,
JAVA 之父是 James Gosling
后来基于Java的后续发展,同时遇到了1998互联网爆发式发展(互联网的发展是指数级别, 传统行业发展是百分比一点点增长),互联下需要一个中立跨平台都能解释运行的一门语言,因此Java大卖。
由此可见, 成功是需要提前准备和机遇的。
5 Java各种爹:
6 java 版本体系:
7 JVM简介:
8 Java注释和编译运行:
Java代码中的注释信息在编译时会被清理掉,编译后的字节码文件没有任何注释。
9 为何国际通用unicode字符集:
一个Unicode字符集占2个字节,
即 2的16次方= 256*256 = 65536,
英文24个字母,汉字2W多个汉字,这6W多的范围足够表示世界上所有的字符,因此使用占2个字节长度的
Unicode编码作为国际通用标准。
9 为何Java是强数据类型:
Java应用范围很广,从服务器到个人PC到手持设备,有的对内存要求宽泛有的则苛刻,
定义成强类型是为了便于开发人员在不同环境下做选择。
10 浮点数并不能精确的表示小数,是有舍入误差的,尽量避免比较中使用浮点数, 如果需要进行
不产生误差的精确数字计算,需要使用 BigDecimal, 而如果针对大数据整型做比较要用BigInteger
11 向上转型时, 指的是表述的范围的向上,而不是字节长度向上
13 生成Javadoc做法:
1 代码中需要用 /** 方式注释 2 使用参数@param @return等参数
2
工程右键/ 如下图,一路next即可生成 当前工程对应javadoc的html格式说明文档:
14 为何静态方法 不能使用非静态变量:
1 静态方法放在内存方法区
2 非静态变量(类变量)只有在new出来后 放在堆内存中
这两者不在同一区域中,够不到,因此访问不了
15 面向对象编程的本质:
以类的方式组织代码,以对象方式封装数据。
面向对象和面向过程:
老蒋和老毛思维, 一个面向过程,后者面向对象,面向对象下,后期整合非常方便,
面向过程下,老蒋总是坐着飞机飞来飞去指导每一步骤
16 java 单继承:
单继承利于构建继承树, 分析类之间关系, 维护类之间关系。
国企和公务员就是多继承关系,领导有好几个
外企就是单继承关系。 比尔盖茨是没权利指挥不是自己直属手下人干活,比如扫地工,也没有权利开除
部队也是单继承关系。
17 this, super参数:
this, super参数:
1 只会出现在非静态方法中
2 在非静态方法的形参中会默认含有次参数,隐形参数
public void study(this,super) { // 这个this指向 new出对象的内存地址, super也是隐形参数 被默认传递
this.name = name;
}
this使用案例2: 如何辨别调用方法是子类自己还是父类:
public class HttpServlet {
public void service(){
System.out.println("HttpServlet service()");
doGet();
}
public void doGet(){
System.out.println("HttpServlet doGet()");
}
}
public class MyServlet extends HttpServlet {
public void doGet(){
System.out.println("MyServlet doGet()");
}
public static void main(String[] args) {
HttpServlet servlet = new MyServlet();
/**
* 在调用时, 都会带隐含形参(this, super), 执行下面方法时,进入到父类方法
* public void service(this,super){
System.out.println("HttpServlet service()");
doGet(); ----> this.doGet();
因为这里的this是new MyServlet() 因此最后调用方法为 MyServlet的doGet()
}
*/
servlet.service();
}
}
18 三大特性:
继承: is a has a 方式来区别于 组合
封装: public protected default private 实现访问权限的限制
多态: 相当于现实生活中的 说一套 做另一套,比如美国对于钓鱼岛问题,含糊,真正出事时该帮日本还是帮日本; 多态仅仅是方法多态