当前位置:必发365电子游戏 > 编程 > 这种新语言被命名为"Oak"(James,.class(与平台无关的字节码文件) -&gt
这种新语言被命名为"Oak"(James,.class(与平台无关的字节码文件) -&gt
2019-12-19

底工概念

特点

两种为主机制

只顾,Java 语言是跨平台(write once run anywhere)的,JVM 不是跨平台的。Java 的跨平台通过 JVM 落成。

三大平台(技能布局)

关于 JVM - JRE - JDK

关于 Java.exe - Javac.exe

图片 1

关于 Java 的配置

对Java的初识,Java初识

怎样是计算机程序:    为了让Computer实践某个操作或缓和某些难题而编写制定的豆蔻年华多级有序指令的集结.(轻易的话正是记算机为成功有个别职能坐褥的风姿洒脱层层有序指令集结卡塔尔(قطر‎;

Java的来历:  Java的开始时代开拓早在1993年就起来了.那时,在前Sun集团内,有一个称得上Green的项目,在James戈斯林的引路下,这一个类其余程序员受命设计后生可畏种小型的微机语言,用于机顶盒,家用电器气调整制晶片等成本类设备.最早,这种新语言被取名称为"Oak"(詹姆斯戈斯林  办公室窗外的橡树名卡塔尔(英语:State of Qatar),但新兴由于"Oak"这一名称已被占用,由此改名叫"Java".据悉那是因为那时候大家在想新名称的时候,正尝试着豆蔻梢头种来源印尼的爪哇小岛盛产的咖啡(这种咖啡也称之为Java卡塔尔国,于是就选择了"Java"----后生可畏种咖啡的名称作为新语言的名目,所以Java语言的注脚就是生龙活虎杯生机勃勃的咖啡.Java语言的创办人JamesGosing也被大伙儿誉为"Java语言之父"[Java是前Sun企业(现燕体股份有限集团卡塔尔(英语:State of Qatar)于1991年出产的高档编制程序语言,Java手艺能够用在大致全体类型和局面包车型地铁器械上,小到Computer晶片,蜂窝电话,大到最好计算机,无处不在.] ;

Java工夫平台:  Java SE:标准版  Java EE:企业版  Java ME:移动版;

支付Java程序的步骤:  1.编写源程序:   a.文件名必需与类名风华正茂致   b.Java是从严区分轻重缓急写   2.编写翻译:   a. 命令:javac 文件名.java   b. 生成.class文件(人看不懂唯有Computer懂)   3.周转:   a.结果;

 

什么是计算机程序: 为了让Computer实行有些操作或缓慢解决有个别难点而编写制定的一文山会海有序指令的集结.(简单的讲正是记算...

Java源文件布局

Java程序实施步骤: .java源文件,先编写翻译 -> .class(与平台无关的字节码文件卡塔尔(英语:State of Qatar) -> 后表明,通过 JVM -> 特定平台的机械码 

  package packageName;
  import | import static packageName;
  public classDefinition | interfaceDefinition | EnumDefinition {}
  classDefinition | interfaceDefinition | EnumDefinition {}

注:一个源文件中只好有贰个public类,不然编写翻译器找不到相应施行的main方法,可是三个源文件中得以有多少个非public类。贰个源文件中也只好有八个public接口。三个源文件中也必须要有一个public枚举类。

关于访谈修饰符

图片 2

垃圾回收

只负责在适龄时间回笼堆内部存储器中处于不可达状态的对象。强逼(建议)实行垃圾回笼措施:

finalize:暗中同意机制,Object 类的实例方法:  protected void finalize(卡塔尔(英语:State of Qatar) throws Throwable  
虚引用:重要用来追踪对象被垃圾回笼的气象。虚援用必得与援引队列联合使用 
JAR包 :Java 档案文件,Java Archive File。

注意事项

 

Java类库

[修饰符] class 类名
{
    初始化块;成员变量;构造器;方法;内部类;
}

 [1]. Scanner 类
  基夏梅则表达式的文件扫描器:输入流、文件、字符串。
 [2]. System/Runtime 类 
  与程序的周转平台/运转时景况互相:情状变量、系统天性甚至文件加载、垃圾回笼和能源清理。
  System.identityHashCode(Object obj卡塔尔国:依照内定对象的地址准确总结到的hashCode值,identityHashCode值唯风流洒脱标志对象。
  Java 程序和 Runtime 实例生龙活虎对风流倜傥,getRuntime(卡塔尔(英语:State of Qatar) 获取。Runtime 类能够独立运营一个经过运维操作系统的一声令下:rt.exec("命令"卡塔尔(英语:State of Qatar);
 [3]. String/Math 类
 [4]. Random/ThreadLocalRandom 类
  减弱三十多线程财富竞争,保证线程安全行性,静态 current(卡塔尔(قطر‎ 方法赢得 ThreadLocalRandom 对象。  
  Random rand = new Random(System.currentTimeMillis());
 [5]. BigDecimal 类
  消除 double 类型精度遗失难点、准确总括浮点数,成立方法:
  ·  基于 String 的结构器创造:new BigDecimal(String str卡塔尔(英语:State of Qatar);
  ·  以 double 参数成立:BigDecimal.valueOf(double value卡塔尔(英语:State of Qatar);
 [6]. Date/Calender 类
  Date 类不引入应用。Calender 类是抽象类,静态方法 getInstance(卡塔尔 获取 Calender 对象,Calender 协理较好的容错性。注意,其 set(卡塔尔(قطر‎方法有延迟改进的天性,能够制止接触数13遍不供给的寻思。 
 [7]. 别的常用方法
  ·  MessageFormat:格式化字符串;
  ·  NumberFormat:格式化数字;
  ·  (Simple卡塔尔(قطر‎DateFormat:格式化时间、日期;
   => DateTimeFormatter 格式器类:格式化日期时间、字符串深入分析;

继承 Inheritance ~ 多态 Polymorphism ~ 组合

类单继承,extends,Java类只好有三个一直父类。java.lang.Object类是全数类的父类。接口多落成,implements
java.lang.Object

Java规定:

Objects 工具类:空指针安全的
[1]. Objects.requireNonNull(obj卡塔尔(قطر‎:对艺术的形参作输入校验;    
protected ~ final
protected:允许子类重写父类方法,但不容许其余类访谈,final是区别意子类重写父类方法。
final:[1]. 变量不可变,方法不可重写,类无法被持续; [2]. 定义宏变量;
不得变类
该类的目的创制后,对象的实例变量不可变。注意,包罗援引类型成员变量的不可变类须要提供保养措施。
[1]. private final 成员变量;
[2]. 带参的布局器初阶化[1]的成员变量,仅提供getter(卡塔尔方法;
this ~ super
this 是调用同多个类中重载的协会,super 是调用父类的布局器。
构造器 ~ 初始化块
对Java对象实践内定的初阶化操作。布局函数是给相应的指标初阶化操作。

开端化块在创制Java对象时隐式推行且在构造器在此之前。初叶化块没盛名字标志,修饰符只好为static,静态初阶化块先于普通开首化块试行。

有关组织代码块和布局方法的关联(最棒通过反编写翻译贰个类来询问)

instanceof ~ (type)
objA instanceof classB,推断引用类型对象objA是或不是是classB类或是其子类、完成类的实例。objA 的编写翻译时类型要么是classB,要么与classB有老爹和儿子世襲关系,不然编写翻译错误。 在要挟类型调换(type卡塔尔在此之前,先举行instanceof剖断,防止现身ClassCastException至极。相像C# 中的 is 运算符。

if(objA instanceof classB)
    classB objB = (classB)objA;

组合 ~ 继承
类的2种复用机制,组合是把旧类对象作为新类的(private卡塔尔国成员变量实行整合用于落成新类的效应,继承是(is-a卡塔尔国关系,组合是(has-a卡塔尔(قطر‎关系;两个花销仅差一个private成员变量。
abstract ~ final ~ static ~ private

abstract类只好被持续,abstract方法必需由子类重写。
 [1]. abstract不能够与final同有时间修饰类或措施;
 [2]. abstract不可能与static同期修饰方法,但足以同一时候修饰内部类;
 [3]. abstract不可能与private同一时间修饰方法;
接口 ~ 抽象类
抽象类:abstract,多少个类的模板,模板形式;
接口:interface,多少个类应固守的公家行为标准,面向接口耦合和通讯;
 [1]. 成员变量:静态常量,暗许 public static final ;
 [2]. 方法:抽象方法,默许 public abstract,同时Java8同目的在于接口里定义私下认可方法(default卡塔尔国和类措施(static卡塔尔(قطر‎,注意接口没有构造方法
 [3]. 内部类,内部接口,内部枚举,私下认可 public static;

多态

数据成员:父类和子类有相近的分子变量,多态下访谈的是父类的积极分子变量

成员方法

内部类

优点:成员内部类作为外部类的分子,能够访谈外界类的任何成员

场景:A类和B类,A类想直接待上访谈B类的分子,而B类又需建设布局A类的靶子来访谈A类中的成员。那时候,应该将A类定义成B类的个中类。

作用域

互相探问

瞩目,内部类不能被表面类的子类重写(类的范围名确定分裂)。
非静态内部类
实例相关,非静态内部类对象里保存外界类对象的援引,依存于外界类对象;非静态内部类里无法定义静态成员(至于缘何,能够设想类的加载过程,并参谋 );
外界类访问内部类:(new innerClass(卡塔尔国卡塔尔(قطر‎.innerVar;
非静态内部类的布局器必得通过外界类对象调用;非静态内部类的子类的靶子也存活于外界类对象;
静态内部类
static,类相关,静态内部类对象保存外界类的援用,依存于表面类;接口的中间类私下认可是 public static;
外界类访问内部类:[1]. (new innerStaticClass()).innerVar;[2]. innerStaticClass.innerStaticVar;
静态内部类的结构器通过外界类调用; 
无名氏内部类
无名氏内部类不能够重复使用,必得世襲一个父类或促成二个接口。被佚名内部类访谈的生机勃勃对变量暗中认可是 final。最常用的创制无名氏内部类的情形是急需创制某些唯有空虚方法的接口类型的靶子。

留意,上边介绍的内部类都是成员内部类,还恐怕有一种奇特的中间类是概念在外界类的积极分子函数中,叫局地内部类,局地内部类只可以访谈该成员函数的 final 属性。

Lambda 表达式

Java8 引入 Lamba 表达式进级简化佚名内部类、无名格局,允许成立函数式接口的实例。拉姆da 表明式的对象项目能且必得是赫赫有名标函数式接口,函数式接口只好声爱他美(Aptamil卡塔尔国(Aptamil卡塔尔(قطر‎个架空方法。
[1]. 创立临时对象; [2]. 赋值;

格式:(形参列表)->{代码块/方法体}  

艺术援用 ~ 布局器援用
当方法体唯有一条代码时,能够用艺术援用和结构器援用替代 拉姆da 表明式。

格式:类名::类方法/实例方法/new  

本质:利用简洁的语法创造函数式接口的实例 关于无名氏内部类和 Lamba 表达式的异议自行百度。

枚举

枚举类显式世襲 java.lang.Enum 类,java.lang.Enum 类完毕了 java.lang.Comparable 和 java.lang.Serializable 五个接口。

1. public static <T extends Enum<T>> T valueOf(Class<T> enumType, string name)
静态方法,用于重回钦点枚举类中钦命名称的枚举值,以枚举类 SeasonEnum 为例:
  -- SeasonEnum se = Enum.valueOf(SeasonEnum.class, "SPRING" );
  -- SeasonEnum se = SeasonEnum.valueOf( "SPRING" );
2. 重临枚举常量名称、索引值
  -- SeasonEnum.SPRING;
  -- SeasonEnum.SPRING.name();
  -- SeasonEnum.SPRING.toString();
  -- SeasonEnum.SPRING.ordinal();  // 索引值 
3. 抽象枚举类
枚举类中应用 abstract 定义抽象方法,枚举类私下认可修饰为 abstract,同一时间种种枚举值必得显式达成抽象方法。

Java 集合

Java 集结分为 ListSetMapQueue 两种体系,接口 Collection 和 Map 是 Java 群集框架的根接口,List、 Set 和 Queue 接口派生于 Collection 接口。非类型安全,以 Object 类型存储,须求强逼类型转变。 
Collection
 --  Iterator iterator(卡塔尔(英语:State of Qatar):用于遍历集结成分;
 --  Object[] toArray(卡塔尔:群集转化为数组;
 --  void removeIf(Predicate filter卡塔尔(قطر‎:批量剔除满足条件的因素,入参为 Lambda 表明式;
 --  Stream stream(Predicate filter卡塔尔(قطر‎:再次回到集合对象对应的 Stream 对象;(Stream 编制程序,利用 Stream 对象的会集操作简化对聚焦的操作),多少个流式 API:
 [I]. filter(Predicate predicate卡塔尔:入参为 拉姆da 表达式,过滤 Stream 对象中不相符条件的成分;
 [II]. toArray(卡塔尔:将流 Stream 对象转变为数组;
 [III]. forEach(Consumer action卡塔尔:入参为 拉姆da 表明式,遍历流 Stream 对象中的成分;
 
List:有序、可重复
线性表接口,提供索引访谈、插入、删除、替换。额外措施,入参均可为 Lambda 表达式:

void sort(Comparator c); 
void replaceAll(UnaryOperator operator); 
ListIterator listIterator(); 

里头,ListIterator 接口世襲于 Iterator 接口,扩张了前向迭代成效,专项使用于操作 List。 

[1]. ArrayList(使用功效相当高) - Vector(线性安全的ArrayList)
List 接口的贯彻类,基于数组,暗许长度10,每一遍扩大体积增加三分之一(1.5倍,(oldCapacity * 3)/2

[2]. LinkedList

类 LinkedList 既实现 List 接口,也促成 Deque 接口,基于链表。推荐 Iterator 迭代器随机访问元素。

Collection接口继世襲口Iterable,Collection连串都享有获取自小编迭代器的措施,只不过每一个子类集合都进展了重写(因为数据构造分裂)

ListIterator:List的故意迭代器,在迭代进度中补助增加或改变成分。而任何平日性的迭代器,仅仅支持获取和删除操作。
小结:性能 ArrayList > LinkedList。

Queue:队列会集
提供 offer(卡塔尔(英语:State of Qatar) 和 poll(卡塔尔(英语:State of Qatar) 入队和出队。
[1]. Deque -> ArrayDeque
接口 Deque 世袭于 Queue 接口,代表"双端队列",能够作为"栈"使用。
Iterator descendingIterator(卡塔尔国;逆向迭代双端队列 
类 ArrayDeque 既得以达成 Deque接口,也促成 List 接口,能够看作"栈"使用,基于数组。
[2]. PriorityQueue
优先级队列,不准 null 值。排序作用、成分非FIFO,排序方法参见 TreeSet。
Set:冬日、不可重复
[1]. HashSet -> LinkedHashSet
HashSet 是 Set 接口的落实类,非线程安全。底层哈希表完成,按 Hash 算法 存款和储蓄成分(依据成分的 hashCode 值总括存款和储蓄地点并判重),成分值可感觉null,存取和搜索速度快。2 个 HashSet 成分相等的充要条件:

obj1.hashCode()==obj2.hashCode() && obj1.equals()==obj2.equals();  

要素的哈希值通过成分的hashcode方法得到,首先剖断七个成分的哈希值,若是哈希值相似,接着会比较equals方法,假如equls为true,视为同二个成分,若是equals为false就不是同叁个因素(存款和储蓄地方:同一个hashCode地点上能够贮存八个成分。)。

注:为保险 HashSet 功能的兑现,hashCode(卡塔尔国 和 equals(卡塔尔(قطر‎ 方法是或不是重写供给保险同步。
~> LinkedHashSet
HashSet 的子类。利用链表维护成分的插入顺序,质量略低于 HashSet。
[2]. SortSet -> TreeSet
TreeSet 是 SortedSet 接口的贯彻类。按 红黑树 的数据构造有序存储同种类成分:

当成分作者不具有相比较性,大概成分本身具备的相比较性不是所需的,那时要求让容器本人持有相比较性。

概念二个类实现Comparator接口,完结compare方法,并将该接口的子类对象作为参数字传送递给TreeSet集结的布局函数。

class MyComparator implements Comparator {
    public int compare(Object o1, Object o2) {

        }
}

当Comparable相比艺术及Comparator比较艺术同一时间存在,以Comparator相比较艺术为主。

2 个 TreeSet 成分相等的充要条件:

0 == this.compareTo(obj)  // 自然排序
0 == (Comparator对象 | Lambda表达式).compare(t1,t2)   // 定制排序

注:为保障 TreeSet 功效的兑现,自然排序中 compareTo(卡塔尔国 和 equals(卡塔尔(英语:State of Qatar) 方法须保持同步。
~> SortedSet
SortedSet 接口世袭自 Set 接口。
[3]. EnumSet
枚举类型成分的平稳集结类,以枚举值在 Enum 类中的定义顺序决定集结凉月素的相继,成分不容许为null。Enum 对象在里面以 位向量 的款式积存,紧密高效、占用内部存款和储蓄器小、运转功用好。

EnumSet es = EnumSet.Allof/noneOf(Season.class);     

小结:EnumSet 是怀有 Set 完成类中质量最棒的,质量 HashSet > TreeSet。HashSet、TreeSet、EnumSet 均线程不安全。

Map:映射集结
提到一定, Map 的 key 值集结是 Set,value 会集是 List,Map 提供 Entry 内部类封装 key-value对,通过 get(Object key卡塔尔(英语:State of Qatar)/remove(Object key卡塔尔国获取和删除成分。
HashMap - Hashtable -> LinkedHashMap
HashMap 非线程安全、key和value 允许为 null,Hashtable 线程同步安全,key和value 不容许为 null,品质 HashMap > Hashtable。2 个 key 值相等的充要条件:

obj1.hashCode()==obj2.hashCode() && obj1.equals()==obj2.equals();  

2 个 value 相等的充要条件:

obj1.equals()==obj2.equals();

注:为确定保证 HashMap-Hashtable 效能达成,hashCode(卡塔尔(英语:State of Qatar)和equals(卡塔尔国方法是还是不是重写需保持同步。
~> LinkedHashMap:
HashMap 的子类。利用双向链表维护成分的插入顺序,质量略低于 HashSMap。
~> Properties:
Hashtable 的子类,key和value 均为 String 类型的 Map,store(卡塔尔和load(卡塔尔(قطر‎存储和加载 属性文件。
SortedMap -> TreeMap
类 TreeMap 是 SortedMap 接口的兑现类。按 红黑树 有序存款和储蓄同序列成分:参照他事他说加以考察TreeSet。
EnumMap
内部以数组情势保留,紧密高效,key 值不能够为 null,必得与枚举类关联。
小结:品质 HashMap > TreeMap,EnumMap 品质最佳。
 
Iterator:迭代器,必得依靠于 Collection 对象。
 - boolean hasNext():
 - Object next():
 - void remove(卡塔尔(قطر‎:用于删除集结里 next(卡塔尔(قطر‎ 方法上壹回回到的因素;
 - void forEachRemaining(Consumer action卡塔尔(قطر‎:利用 拉姆da 表达式遍历会集元素;
:Iterator 迭代器选用 fast-fail 快捷退步机制,迭代 Collection 集合时,群集成分不能够被更正,不然立时抛出 ConcurrentModificationException 格外。

Collections:群集工具类,静态方法
[1]. 排序、查找、替换等
 - void sort/reverse/swap/shuffle/retate(List list卡塔尔国: 排序/反转/调换/随机排序/旋转
 - int binarySearch(List list, Object key卡塔尔国:二分查找
 - void fill(List list, Object obj卡塔尔(英语:State of Qatar):成分填充
 - boolean replaceAll(List list, Object oldObj, Object newObj卡塔尔:成分改换
[2]. 同步调整
提供 synchronizedXxx()方法将钦命集结打包程线程同步的集中,消除八十二线程并发访谈集适合时宜的线程安全主题材料。

Arrays:集结工具类,静态方法

泛型 Generic

类型安检,制止引起 ClassCastException 至极。以泛型List为例,类型通配符 List<?> 能够代表各个泛型List的父类,设定类型通配符的上限 List<? extends 父类> 节制其只代表某大器晚成类泛型List的父类,注意接纳了品种通配符的集中不容许添新币素。通配符用于帮助灵活的子类化。 

至于泛型,注意以下多少个难点:

参考
[1]. 泛型知识点总结;
[2]. Java计算篇连串:Java泛型;

异常

Java 的特别机制重大依靠于 try,catch,finally,throw,throws 八个器重字。此中,finally 用于回笼在 try 块中展开的大意财富,throw 用于机动抛出相当的实例,throws 用于方法签字中扬言该格局恐怕抛出十一分、并由上超级调用者管理该极其。Java 的异形景况有 2 类:Error 和 Exception,均三回九转于 Throwale 类。
Runtime 极度(运营时那么些卡塔尔(英语:State of Qatar),RuntimeException 类及其子类的实例,灵活易用。

Java的可怜连串

怀有的特别类均在 java.lang 包中。

图片 3

中间,Throwable 描述失实和极其,Error(错误)表示不可治愈,Exception(卓殊)表示可治愈,分外包蕴运维时非常和非运转(编写翻译)时特别。

丰盛处理方式

优点

行使注意

自定义异常 :自定义十一分类须要提供 2 个布局器。

 1 public class MyException extends Exception | RuntimeException
 2 {
 3     public MyException(){}
 4     public MyException(String msg){
 5         this.super(msg);
 6     }
 7     public MyException(Throwable t){  // 支持异常的链式处理
 8         this.super(t);
 9     }
10 }

老大链 :链式管理
  捕获 1 个拾分后继之抛出另七个要命,同临时候把原有至极的消息保存下去的体制。

图形顾客分界面编程 (了然就能够)

 GUI(Graphic User Interface)编程,图形分界面组件库(AWT + Swing)+ 事件管理机制。
·  AWT,抽象窗口工具集,Abstract Window Toolkit。 基本的窗口框架,重量级组件、重视底层平台;
·  Swing,轻量级组件,百分百 Java 完毕,跨平台质量好。采取 MVC 设计方式,完结 GUI 组件的显示逻辑和数码逻辑的分别,灵活性好;

MySQL - JDBC

 关于 MySQL 的基础,请参考 MySQL 初识 - sqh;
 关于 JDBC 的基础,请参考 JDBC 初识 - sqh;

注解

 Annotation,接口,封装元数据,修饰程序成分、提供为其设置元数据的点子,允许在源文件中放到补充音信,肖似C# 中的天性。程序通过反射能赢得内定成分的 Annotation 对象、进而提取申明中的元数据。Java 8 协理再一次申明,须求 @Repeatable 修饰。访谈和管理 Annotation 的工具为 APT,Annotation Processing Tool,对源代码文件实行检查测量检验,实施适度从紧的代码检查。
 - java.lang 包下的为主 Annotation:
·  @Override:限制子类必需重写父类的格局,只可以修饰方法; 
·  @Deprecated:标志已不适当时候宜;
·  @Suppress Warnings:禁止编写翻译器警示;
·  @Safe Varargs:专项使用于制止堆污染 Heap pollution 警报;
·  @FunctionalInterface:函数式接口申明,必要接口只好分包二个浮泛方法,只可以修饰接口;
 - java.lang.annotation 包下的 元Annotation:
·  @Retention:钦定 Annotation 的生命周期;
      RetentionPolicy.RUNTIME: 
      编写翻译器将 Annotation 记录在 .class 文件中,运转时方可通过 JVM 或反射获取 Annotation 新闻;
·  @Target:内定 Annotation 修饰的指标程序成分,全体程序成分的父接口为 AnnotatedElement;
·  @Documented:提醒被修饰的 Annotation 接口将被 javadoc 工具提取成文书档案;
·  @Inherited:Annotation 具备父亲和儿子继承性;
自定义 Annotation:默许世襲Annotation 接口

 public @interface AnnotationName{...} 

  在那之中,Annotation 定义中,成员变量必得以无形参方法的花样定义,能够用 default 钦赐伊始值。
AnnotatedElement 接口:用于提取 Annotation 音讯,实例方法
   -  getAnnotation(xxx卡塔尔(英语:State of Qatar):获取程序成分上的内定表明;
   -  getAnnotations(卡塔尔: 获取程序成分上的享有评释;
   -  isAnnotationPresent(xxx卡塔尔(قطر‎(卡塔尔(قطر‎:判别程序成分上是不是留存钦赐注明;

I/O

   具体仿效 Java 输入输出体系学习 - sqh;

多线程

   具体参照他事他说加以考察Java 三十二线程学习 - sqh;

网络编制程序 

   具体仿效 Java 网络编制程序学习 - sqh;


有关暗中认可布局方法

泛型通配符 ?

限定泛型通配符的分界

JDK5中的泛型允许在编辑集合代码时,节制集结的管理项目,进而把原本程序运行时或然产生难题改造为编写翻译时难题,升高程序可读性和国家长期安定。  

至于数据类型间的强迫类型调换

三个数字,若未有项目的志,暗许是 int 类型

// 会进行强制类型转换,如果超出类型能表示的范围,会报错,反之不会
byte b1 = 10;  // ok
byte b1 = 1000;  // 编译失败

byte b1 = 10;   byte b2 = 20;
byte b3 = 10 + 20;   // ok
byte b3 = b1 + b2;   // 编译失败

b2 = b1 + b2;   // 编译失败
b2 += b1;   // ok, Java 编译器已经默认对 += 进行强制类型转换

== 与 equals()

直接量 “hello” 与 new String(“hello”)

构造器new 与 valueOf()

后自增/减在JVM中的运营原理

int i = 0;
[1]. i++;    // i = 1
[2]. i = i++;   // i = 0

JVM会先声Bellamy(Bellamy卡塔尔(قطر‎个有时变量保存自增/减从前的值,最后回来该值作为表达式的值

第一步:int temp = i;   // temp = 0;
第二步:i++;   // i = i + 1;
第三步:return temp, 作为表达式的值

只顾,i 在该进度中的变化:i = 0 ------> 1 ------> 0 

Static

静态修饰符,其成员在方法区(数据分享区),优先于对象存在,作为目的的分享数据。

关于实例变量和静态变量

 

Eclipse

有关快速键

Alt + /:内容提示       Ctrl + 1:快速修复,编译异常提示      Ctrl + shift + O:导包
Ctrl + /:单行注释      Alt+上下键:代码位置切换                Ctrl + Shift + F:格式化代码块
Ctrl+Shift+/或:多行注释    Ctrl+Shift+X/Y:大小写转换
查看源代码:(1)Ctrl+单击 需要查看源码的类;(2)Ctrl+Shift+T