`
阅读更多

一.原理、概念
1.面相对象语言的三个核心本质:数据抽象化(data abstraction)、继承(inheritance)、多态(polymorphism也叫动态绑定dynamic binding)。覆写(overriding)和重载(overloading),覆写引发多态。
重载(overloading):指一个类中具有相同方法名,不同的参数(包括个数、类型、位置)。(从父类继承的方法当然也算子类的方法,不包括父类的private方法)
覆写(overriding):指父类和子类具有相同方法名、相同参数(包括个数、类型、位置)。(即把从父类继承的有效方法给屏蔽了,当然不包括父类的private方法)

2.static,final,abstract说明:
static用来修饰变量(类变量)。方法(类方法),他们是静态的、只需加载一次、类公用,类变量定义如用到方法只能是类方法,类方法内用到的变量只能是类变量,因为他们被初始化时成员变量和成员方法还没有初始化。
final用来修饰变量(不能改变)、方法(不能重载)、类(不能继承)。
abstract用来修饰方法(只能被重载)、类(只能被继承),抽象类不一定含有抽象发放;但含有抽象方法的一定为抽象类。

3.在一个文件夹内的两个.java文件如果没设package,则编译器会将两个文件隶属的文件夹视为default package,因此他们互为friendly。

4.类无构造函数可自动产生一无参构造函数(default constructor);当有任何构造函数时都不会有default constructor。构造函数调用其他构造函数只能在第一行,故无法调用两个构造函数(包括父类和子类其他的构造函数)。

5.类的装载时间:生成一个对象时(装载整个类);取类变量或类方法时(装载静态部分)。

6.生成对象,实现接口。生成对象包括:声明、实例化、初始化。

7.j2se/j2ee/j2me的区别:
java 从JDK1.2的版本开始就叫java2了,同时SUN公司将其分为三个平台:

J2SE(JAVA标准版)主要基于界面程序的开发,其中除了基本的JAVA API外主要包括了Flowout Event Graphics,J2SE就是Java2的标准版,主要用于桌面应用软件的编程,jdk1.1.8版本以后改成j2se。

J2EE(企业级版本)主要用于企业级应用的开发以及分布式的网络程序的开发,如电子商务网站和ERP系统。

J2ME(微型版本)用于开发嵌入式的设备程序,如手机,智能烤箱,手机和PDA的编程等。

二.语法
1.java's lable:仔细看一下文档你就会发现,JAVA里的标号只能定义循环语句。
label1: for (.....) 是合法的。
break label1;
continue label2;
label2: if (...) 是非法的。

2.转义字符  转义字符的意义
\n      换行
\t      横向跳到下一制表位置
\v      竖向跳格
\b      退格
\r      回车
\f      走纸换页
\\      反斜线符"\"
\'      单引号符
\a      鸣铃
\u****     1~4位十六进制数所代表的unicode字符(java)
\***     1~3位八进制数所代表的ASCII字符(c)
\x**     1~2位十六进制数所代表的ASCII字符(c)

3.三种常用进制表示:0123——八进制 123——十进制 0x123——十六进制。

4.length & length():length使数组的一个变量;length()是String类的一个方法。

5.throw & throws:throw在方法体内引发异常;throws在方法参数表后向上级抛出异常。

6.无限循环:for(;;) 和 while(true){} ,得用break离开。

三.类库
1.java随机数:首先利用random()获得一个随机浮点数,然后乘以你希望得到的整数的最大值,最后对得到的结果取整。例如你希望得到的整数的最大值是1000,那么你就可以这么写: int rand = (int) (1000 * Math.random());//Math.random()的输出范围是[0,1)。

2.数组的相关操作
a)array的充填
Java标准程序库中的Arrays中有fill(),将单一数值复制到每个位置
b)array的复制
Java标准程序库中提供System.arraycopy()的static函数
c)array的比较
Arrays提供重载版的equals(),藉以比较两个arrays是否相等,能够处理object和所有基本型别,两个arrays必须拥有相同个数的元素,而有所有对应元素必须两两相等。
d)array元素的比较
有两种方法:a)【java编程思想e2 P310】实现java.lang.Comparable接口,Comparable只有一个compareTo()方法,覆写它:x大返回-1
,相等返回0,x小返回1。b)【java编程思想e2 P311】实现java.util.Comparator接口,此接口有compare()和equals()方法,如无必要无需覆
写equals()方法。
e)array的排序
利用内置的sort函数,可以针对任何primitives array或objects array进行排序。
f)在已排序的array中进行查找
array排序完毕后,可以使用Arrays.binarySearch()快速查找某个元素,在未经排序的array上不能使用binarySearch(),否则结果完全无
法预测,如果array内含多个相同元素,查找动作不保证会搜出其中哪一个元素。

3.容器(containers)
java.lang.Object -> java.util.AbstractCollection & AbstractMap
AbstractCollection -> AbstractList & AbstractQueue & AbstractSet
sop(AbstractCollection);//打印[dog, cat, bird]
sop(AbstractMap);//打印{first=dog, second=cat, third=bird}

四.经验
1.Java是面向对象的语言,操作几乎都是在对象之间进行的,一个类的实例如果是(null)的话则不能调用这个实例的方法,否则就会出java.lang.NullPointException错误。确定它肯定是不为null的。对于String的这种equals或equalsIgnoreCase的操作常常还可以用下面的方法进行安全操作:用一个确定的不为null的String去与未知的String进行比较。
String str = null;
if (“Hello”.equals(str))
{ System.out.println(“str is Hello”); }

2.java中应用浮点数:http://www-128.ibm.com/developerworks/cn/java/j-jtp0114/index.html。建议:想办法用整数;或者用BigDecimal类。

3.java中+用于字符串连接和算术运算,char类型在做运算时会先转换成int类型,所以System.out.println('H'+'a');输出169。
如果你真想把char连接起来,要怎么办呢?
1。用Stringbuffer。
StringBuffer buf = new StringBuffer();
buf.append(`H`);
buf.append(`a`);
System.out.println(buf);

2。按照对付int的方法来处理,利用String重载+运算符的特性。
System.out.println("" + `H` + `a`);

3。在JDK5.0里,还可以用格式化输出。
System.out.println("%c%c", `H`,`a`);
System.out.println(""+'a'+'b'+'c');//前面加一个空串就都按字符串处理。

4。看下面程序输出什么?
public class InTheLoop {

    public static final int END = Integer.MAX_VALUE;

    public static final int START = END - 100;

    public static void main(String[] args) {

        int count = 0;

        for (int i = START; i <= END; i++)

            count++;

        System.out.println(count);

    }

}
解答:死循环(infinite loop)。原因是一个int,是不可能大于Integer.MAX_VALUE的,当到达Integer.MAX_VALUE之后继续加1,就会默认的变为Integer.MIN_VALUE,所以形成了无限循环。这就提醒我们在处理integral type(包括byte, char, short ,int 和 long)的时候,要小心取值范围。

5。JVM中整数的“/”和“%”运算:
a/b=+(a绝对值/b绝对值)取地板  (ab同号、b!=0)
     =-(a绝对值/b绝对值)取地板  (ab异号、b!=0)
eg:7/-3=-1,25/4=6
a%b=+(a绝对值%b绝对值)       (a>=0、b!=0)
       =-(a绝对值%b绝对值)       (a<=0、b!=0)
eg:15%-4=3,-15%-4=-3

6。用移位运算效率较高:
public static boolean isOdd(int i){//判断是否为奇数
    return(i & 1) == 1;
}

7。当赋值运算符出现在if或输出语句上时:首先进行赋值,其次把等号右边的结果作为整个表达式的结果。
例1:
boolean b=true;
if(b = false){
   System.out.println(b);
   System.out.println("haha");
}
输出:
false
haha

8。
boolean b=true;
 System.out.println(b=false);
System.out.println(b);
输出为:
false
false

9、当计算大数字的时候,要小心overflow,variable的类型只能决定最后的存储类型,不能决定中间计算时的临时存储类型。比如
long i = 10000000000000000000000000000 / 1000000000000;

10、位扩展
a)位扩展(widen primitive conversion)时,正数高位补0,负数高位补1。
b)计算前,正数和零存为原码,负数存为补码(去反加一)
eg:Long.toHexString(0x100000000L + 0xcafebabe)打印为多少?0xcafebabe变为Long型为0xffffffffcafebabe 加 0x100000000L = 0x100000000cafebabe,最高位1overflow,结果为0xcafebabe。
c)char型占16位,是0——65535,不含负数,故char位扩展时高位全补0
eg:(int)(char)0xff输出为65535。

分享到:
评论

相关推荐

    Java 学习笔记Java学习笔记

    Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。...Java学习笔记涵盖了这些核心知识点,通过深入学习和实践,你可以逐步掌握Java编程,并应用于实际项目开发中。

    Java学习笔记——良葛格

    "Java学习笔记——良葛格"是一份专为初学者设计的教程资料,由良葛格精心编写,旨在帮助读者掌握JDK5.0版本的Java基础知识。JDK(Java Development Kit)是Java开发的核心工具集,包含了编译器、调试器和运行环境等...

    java学习笔记1

    Java学习笔记1 Java学习笔记1是学习Java过程中的笔记,主要记录了Eclipse开发环境中的快捷键使用、编辑功能、查找和调试等知识点。 Eclipse快捷键 Eclipse中有许多快捷键,掌握这些快捷键可以大大提高开发效率。...

    (完整版)最全的java学习笔记(必看).pdf

    Java学习笔记 Java是一种流行的编程语言,广泛应用于Android应用程序开发、Web应用程序开发、桌面应用程序开发等领域。以下是Java学习笔记的摘要信息: 一、Java技术基础 * 1.1 编程语言:Java是一种面向对象的...

    JAVA学习笔记 林信良

    《JAVA学习笔记》是林信良先生的一部深入浅出的Java编程教程,旨在帮助初学者和有一定经验的开发者巩固和提升Java编程技能。这本书涵盖了Java语言的基础到高级概念,是一份宝贵的自学资料。 首先,从基础部分开始,...

    韩顺平编写的java学习笔记(全)

    ### 韩顺平编写的Java学习笔记概览 #### Java平台分类与运行机制 - **J2SE(Java 2 Platform, Standard Edition)**: 标准版Java开发平台,适用于桌面应用程序开发。 - **J2EE(Java 2 Platform, Enterprise ...

    Java学习笔记学习笔记

    Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习...

    Java学习笔记(必看经典).pdf

    本知识点的标题为“Java学习笔记(必看经典)”,意味着所整理的内容是针对Java初学者的一系列核心概念和原理的总结。 首先,面向对象编程是Java语言的核心,它与传统的面向过程编程有显著的不同。面向对象编程强调的...

    java学习笔记(全)

    Java学习笔记全集是针对Java编程语言的一份详尽的学习资料,它涵盖了从基础到进阶的各个层面,旨在帮助初学者系统地学习Java,并为有一定经验的开发者提供复习和巩固知识的平台。这份笔记主要关注Java语言的核心概念...

    Java学习笔记(必看经典).doc

    这份“Java学习笔记(必看经典).doc”文档将涵盖Java的核心概念和重要知识点,对于初学者和有经验的开发者来说都是宝贵的参考资料。 首先,Java的基础部分通常包括以下几个方面: 1. **Java语法基础**:这是所有...

    java学习笔记.zip

    java学习笔记java学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记...

    《Java学习笔记》

    这份《Java学习笔记》包含了丰富的知识内容,旨在帮助学习者全面掌握Java编程技术。笔记分为7个PDF部分,覆盖了从基础到高级的Java编程概念。 1. **Java基础知识**:这部分内容通常包括Java的历史背景、环境配置、...

    java学习笔记.pdf

    "Java学习笔记" 本资源是一个关于Java编程语言的学习笔记,涵盖了Java的基础知识、语法、数据类型、变量、类型转换等方面的内容。 标题:"java学习笔记.pdf" 描述:"想自学的小伙伴可以看俺" 标签:"Java" 部分...

    瑜琅java学习笔记

    ### 瑜琅Java学习笔记概览 瑜琅的Java学习笔记涵盖了Java的基础概念与核心特性,从起源到高级特性均有涉及。以下是对该学习笔记各部分的深入解析: #### 1. Java起源 ##### 1.1 发展背景 - Java的诞生源于Sun ...

    java学习笔记.doc

    Java 学习笔记 本资源摘要信息涵盖了 Java 编程语言的基础知识,着重于面向对象编程(OOP)的概念和实现。下面是该资源的详细知识点: 1. 面向对象编程(OOP)的基本概念: * 对象: everything is an object...

    Java学习笔记及心得

    ### Java学习笔记及心得知识点详细解析 #### 标题:Java学习笔记及心得 #### 描述:Core Java 学习笔记及心得 pdf格式可打开。涵盖了java的基础入门知识,非常适合自学的及想深入学习理解的同学。 #### 标签:...

    Java学习笔记PPT

    这份"Java学习笔记PPT"是针对Java2版本的学习资源,旨在帮助初学者或有一定基础的开发者深入理解Java的核心概念和应用。 在Java学习的初期,掌握基本语法是至关重要的。Java的语法与C++有诸多相似之处,但更加强调...

    良葛格JAVA学习笔记

    【标题】"良葛格JAVA学习笔记"是一个专注于Java编程的学习资源,由知名教育者或博主"良葛格"编撰。这份学习笔记以其清晰易懂的讲解方式和详尽的内容,深受学习者喜爱,被强烈推荐。它旨在帮助初学者和有一定基础的...

Global site tag (gtag.js) - Google Analytics