`
bizsys
  • 浏览: 761 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Java Notes

    博客分类:
  • Java
阅读更多

1. Environment Variables
        - Linux/UNIX:
                JAVA_HOME="/.../jdk
                export $JAVA_HOME/lib

        - Windows:
                JAVA_HOME: X:\Jdk
                PATH: .;%JAVA_HOME%\bin
                CLASS_PATH: .;%JAVA_HOME%\jre\lib\rt.jar;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar
               


2. Java  Identifier
package, class, method, variable, parameter's name can begin with letter, digit, $ . But can not be Java keywords


3. Conversions of Expression Numeric Types
If either of the operands is of type double, the other one will be converted  to a double.
Otherwise, if either of the operands is of type float, the other one will be converted to a float.
Otherwise, if either of the operands is of type long, the other one will be converted to a long.
Otherwise, both operands will be converted to an int.


4. Method
如果被调method没有return 语句,编译时系统会自动在method最后添加"return;"


5. Bit Operator
a. <<  左边operator在memory中的binary data左移右边operator指定的位数
b. >>  若最高位为0,左边移空的所有位补0; 若高位为1,左边移空的所有位补1
c. >>>  左边移空的所有位补0

bit operator above 适用的数据类型  byte, short, char, int, long
a. 低于int型的operator先自动提升为int再移位
b. int型移位 a>>b,系统先将b对32取模,得到的结果才是真正的移位数, so a>>33同a>>1相等,a同a>>32相等
c. long型移位 a>>b, 系统先将b对64取模,...


6. Control Flow
switch 语句判断条件只接受 byte, short, int, char


7. Memory 分配
Java 把内存分为栈(stack)内存和堆(heap)内存.
栈内存: 在method中定义的基本类型的变量和对象的引用变量均在method的栈内存中分配
堆内存: 堆内存存放由new创建的object & array.堆中分配的内存,由JVM 的Garbage Collection管理.在堆中产生了一个object or array后,还可以在栈中定义一个引用变量,让栈中的这个引用变量的取值等于object or array在堆内存中的首地址,以在程式中使用栈中的引用变量访问堆中的object or array.引用变量为普通变量,定义时在栈中分配,引用变量在程式run到其作用域之外后被释放.


8. OOP 三特征
a. Encapsulation (封装): 将类的成员变量声明为private,再提供一个或多个pbulic方法实现对该成员变量的访问或修改.一个类通常是一个小的module, module设计追求强内聚(许多功能尽量在类内部独立完成,不让外面干预),弱耦合(提供给外部尽量少的方法调用)
b. Inheritance (继承)
c. Polymorphism (多态)


9. 初始化
变量在初始化前不能使用, method内的变量不会隐式初始化,需显示初始化.

实例化对象调用构造方法的内部实现过程:
隐式初始化(系统default初始化)--->显式初始化(按成员变量的赋值初始化)--->参数初始化(按调用构造方法的参数列表初始化)


10. Java is always called by value
基本数据类型: 传递该数据值本身
引用数据类型: 传递这个变量的值本身,即object or array 在堆内存中的首地址


11. Static
类的静态成员被称作 class members (类成员), so静态成员变量叫 class variables (类变量), 静态成员方法叫 class methods (类方法).用static 修饰的class variables & class methods不属于类的某个对象,而属于类.

a. static methods只能直接调用同类中的其它class members (class variables & class metods),不能直接访问类中的非static成员.因为非static变量和方法,需先创建类的实例对象后方可使用,而static methods在使用前无需创建任何对象.

b. static methods不能以任何方式引用this和super 关键字.理由同上, static methods在使用前无需创建任何对象,当static methods 被调用时,this所引用的对象根本就未产生

c. main方法是static的.so在main方法中不能直接访问类中的非static成员,必须创建类的实例对象后,才能通过这个对象去访问类中的非static成员


12. final
a. final mark了的class不能被继承
b. final mark了的method不能被子类override
c. final mark 了的变量 (成员变量和局部变量) 即成为常量, 只能赋值一次, 其life cycle超出method运行的life cycle
d. method中的inner class只能访问该method内的final mark了的局部变量


13.Inner Classes
当类A中的代码要用到类B的实例对象,而类B的代码又要访问类A的成员,可以将类B做成类A的内部类
       package com.sun.java;
       public class Outer{
           public static void main(String[] args){
                ...
           }
           static class Inner{
              private String name;
              public String getName(){
                  return this.name;
              }
        }
a. static inner classes     
    其它类访问静态内部类用法:
        Outer.Inner.inner = (new Outer()).Inner();
        ic.getName();
或    Outer outer = new Outer();
        Outer.Inner.inner = outer.Inner();         

b. member inner classes
    同类类访问成员内部类用法:
        Outer outer = new Outer();
        Inner inner = outer.new Inner();
或    (new Outer()).new Inner();
    其它类访问成员内部类用法:
        Outer.Inner inner = (new Outer()).newInner();

c. local inner classes (方法或方法中的块中定义)
local inner classes定义在method或块内,不能被声明为public, protected, private, static, local inner classes 只在method内有效

d. anonymous inner classes (方法或方法中的块中定义)
anonymous inner classes 没有类名;no keyword:class, extends, implements; no constructors; and implicitly extends a superclass
eg:        public Test anonymousInnerClass(){
                 return new Test(){
                    public void test(){
                              ...
                    }
                 }
             }

方法或块中定义的内部类(local inner classes & anonymous inner classes)只能访问方法中的final类型局部变量,因为final定义的局部变量相当于一常量,其作用域超出方法生命周期
eg:    package com.sun.java;
         class Outer{
            String str = new String("Sun Microsystems");
            public void outer(final int iArgs){
                int test = 10;
                class Inner{
                   public void inner(){
                       System.out.println(str);
                       System.out.println(iArgs);
                   }
                }
            }
         }
在inner 方法中,可以访问变量str和iArgs,不能访问test


14. Access Control
________________________________________________________
                class(本类)  package(同包)  subclass(子类)   others
________________________________________________________
public           OK               OK                  OK                   OK
protected     OK               OK                  OK                        
default         OK               OK
private         OK
________________________________________________________
                                         
                                                     
15. Inheritance
子类继承父类所有的成员变量和成员方法,但不继承父类的构造方法.在子类中可使用super(parameters)调用父类构造方法.

若子类的构造方法没有显式调用父类构造方法,也没有使用this调用重载的其它构造方法,则在产生子类实例对象时,系统默认调用父类无参数的构造方法.若父类没有无参数的构造方法(包括系统提供的),则编译出错.so定义类时,只要定义了有参数的构造方法,通常还需定义一个无参数的构造方法.

super(...) & this(...)不能同时出现在一个构造方法中,for 它们都必须是构造方法中的第一个语句.


16. Abstract class
a. 任何带有抽象method的class都必须声明为abstract class, abstract class的类必须override所有的abstract method后才能被实例化
b. abstract method只需声明,无需实现
c. abstract class中的某个method不一定是abstract的


17. Interface
a. interface是只包含常量和method的定义, 而没有变量和mehod的实现的abstract class
b. interface里声明的变量缺省为public static final
c. 可以定义一个新的interface,  用extends继承一个已有的interface; 也可以定义一个class, 用implements去实现一个interface中的所有method; 亦可定义一个abstract class, 用implements去实现一个interface的部分method, 未被实现的method仍然是abstract method,被该abstract class继承

                                                                                    To be continued...

 

0
1
分享到:
评论

相关推荐

    javanotes7.pdf

    从这本书的标签“java jdk7 jdk javanotes”可以推测,它主要针对Java 7版本,包含了Java Development Kit(JDK)的使用方法和特性。由于本书是为教学目的编写的,因此它的内容应该比较注重初学者对Java语言的理解和...

    java notes 5

    《Java Notes 5》是一本专注于Java编程语言的最新学习指南,旨在帮助读者深入理解和掌握这一强大且广泛应用的编程语言。PDF格式使得这份资料便于在各种设备上阅读和打印,适合自学或者作为教学辅助材料。 Java是...

    Java notes

    ### Java核心面试知识点详解 #### 一、Java的平台独立性 **1.1 Java最重要的特性是什么?** Java最重要的特性是其平台独立性。这意味着Java程序可以在任何支持Java的平台上运行,无需重新编译。 **1.2 平台独立...

    Javanotes7-web-site

    《Javanotes7-web-site》是一本针对大学大一学生的Java基础教程,旨在为初学者提供全面、深入的Java编程知识。这本书以网络版的形式呈现,涵盖了Java语言的基础概念、语法以及面向对象编程的核心思想。在学习这个...

    core_java notes

    总结,"Core Java notes"涵盖了Java语言的核心概念,从基本语法到面向对象特性,再到高级主题如多线程和集合框架。理解并熟练掌握这些知识对于任何Java开发者来说都是至关重要的。通过深入学习和实践,可以提升编程...

    Java Notes from my teacher abroad

    ### Java基础知识概述 #### Java课程概览 本课程总计8小时的教学时间,分为两个阶段进行,每个阶段4小时,最终可获得4个学分。课程内容涵盖了Java的基础知识及其在实际开发中的应用。 #### Java语言的优势 Java...

    Java Notes For Professionals

    This Java® Notes for Professionals book is compiled from Stack Overflow Documentation, the content is written by the beautiful people at Stack Overflow. Text content is released under Creative ...

    java notes 第7版 Introduction to Programming Using Java

    英文原版 Introduction to Programming Using Java Version 7.0, August 2014 David J. Eck Hobart and William Smith Colleges

    JAVANOTES日志笔记总结

    Java编程风格与默认值 在Java编程中,代码风格是一个重要的方面,因为它直接影响代码的可读性和维护性。Java官方推荐使用K&R(Kernighan and Ritchie)风格,这种风格的特点是条件语句和循环语句的大括号紧贴在...

    javanotes

    《JavaNotes》是一本专注于Java编程的开源教材,它的出现为初学者和有经验的开发者提供了深入理解Java语言的宝贵资源。"javanotes-master"这个文件名表明这是一个项目的主分支,通常在Git版本控制系统中表示最新或最...

    leetcode中国-JavaNotes-master:JavaNotes大师

    【标题】"leetcode中国-JavaNotes-master:JavaNotes大师"所涵盖的知识点主要集中在Java编程语言和LeetCode算法挑战上,这是一个开源项目,旨在帮助开发者提升其Java基础和算法能力,特别是针对中国公司的面试准备。...

    Javanotes7.7Git

    在本项目"Javanotes7.7Git"中,我们主要关注的是David Eck所撰写的免费计算机编程教科书《Javanotes》第七版的第七章内容,特别是关于数组和ArrayList的部分。这本书是学习Java编程的绝佳资源,而第七章的练习提供了...

    java8源码-JavaNotes:自用的Java知识梳理图,随时更新

    JavaNotes 本项目基于Java8. 自用的Java知识梳理图, 随时更新. 欢迎新老Javaer一同交流. 如果感觉有用, 请star支持一下~ 意见和建议请开issue交流. 欢迎fork并提出pr共同建设 :) 本项目使用方法 本项目以文件形式...

    iiizk#JavaNotes#01 安装Scala环境1

    配置环境变量,通过scala -version判断是否安装成功进入Scala官网,点击Scala 3下载,页面最下发其他安装方式,选择GitHub 下载Scal

    iiizk#JavaNotes#4、MongoDB索引1

    1. 普通索引 1. 单列索引 2. 多列索引 3. 子文档索引 2. 唯一索引 3. 稀疏索引 4. 哈希索引 5. 重建索引 6. 删除索引 7. 查看索引

    iiizk#JavaNotes#2、安装和运行1

    2.1、获取安装包 2.2、解压tar包 2.3、编译&安装 3.1、redis-server服务端 4.1、服务端脚本 4.2、客户端脚本 4.3、集群登录

    notes API 8.5

    LotusScript是基于VBScript的一个脚本语言,而Java桥接允许Java开发者使用Notes API。这两种方式提供了更高级别的抽象,使得代码更易理解和维护。 6. ** 安全性**:Notes API允许开发者管理安全性,包括设置访问...

Global site tag (gtag.js) - Google Analytics