1.在java中有goto,但这只是保留字,并不能使用(const也是)。在eclipse中的报错信息为”Syntax error on token "goto", throw expected“。

goto的类似功能由break/continue 标签实现。

  (1)break 标签

outer:
        for(int i=0; i<10; i++) {
            if(i == 5)
                break outer;
            System.out.print(i + " ");
        }

  结果:0 1 2 3 4

  分析:break通过标签跳到for循环体外,然后就不会再进入该循环了。

  (2)continue 标签

outer:
        for(int i=0; i<3; i++) {
            for(int j=11; j<15; j++) {
                if(j == 13)
                    continue outer;
                System.out.print(i + " " + j + " ");
            }
        }

  结果:0 11 0 12 1 11 1 12 2 11 2 12

  分析:continue通过标签跳到for外,但只是跳出当前的这次循环,它会重新进入for循环。

  2.是否可以在static环境中访问非static变量?

  eclipse的提示信息:Cannot make a static reference to the non-static field

  3.标识符与unicode

  标识符能由字母(unicode),数字,货币符号(¥,$),连接符号(_)组成。

  这里关注unicode,并不是所有unicode都可以作为标识符的一部分。同时,并不是只有数字不能作为标识符首字符。

     int start = 0;
        int part = 0;
        for(int i=0x0000; i<=0x10ffff; i++) {
            if(Character.isJavaIdentifierStart(i)) {
                start++;
//                System.out.println(Character.toChars(i));
            }
            if(Character.isJavaIdentifierPart(i))
                part++;
        }
        System.out.println("Unicode字符集个数:" + (0x10ffff+1));
        System.out.println("作为首字符个数:" + start);
        System.out.println("作为标识符一部分个数:" + part);
        System.out.println("两者差距:" + (part-start));

  结果:

  4.i++与++i

  这两者不只是先加和后加怎么简单,对于i++,其实i是先将自身的值复制给一个临时变量,然后对自身加1(如同++i),最后才参与运算。

     int i = 1;
        i = i++;
        System.out.println(i);

  结果: 1

  i++的实现如下所示:

    int temp = i;
    i = i+1;
    return temp;

  5.i+++j结果是什么?

        int i = 1, j = 3, result;
        result = i+++j;
        System.out.println("result: " + result);
        System.out.println("i = " + i);
        System.out.println("j = " + j);    

  结果:

  分析:相当于(i++)+j。编译器会采取贪心规则,尽量找最多的运算符(如果学过编译原理能明白为什么这么做)。

  6.float与0

         float f1 = 1f;
         float f2 = 0f;
         float f3 = -0f;
         float result = 0f;
         result = f1/f2;
         System.out.println(result);
         result = f1/f3;
         System.out.println(result);
         result = f2/f2;
         System.out.println(result);

  结果:

  分析:如果是int类型,会抛出异常。

  7.运算顺序

  操作数的计算顺序是从左到右的,即使运算符是从右到左。

        int a[] = { 0, 0, 0, 0, 0, 0};
        int i = 0;
        a[++i] = i++;
        System.out.println(i);
        System.out.println(Arrays.toString(a));

  结果:

  

        int[] a = { 1, 2, 3 };
        int i = 1;
        a[i] *= i = 2;
        System.out.println(Arrays.toString(a));

  结果:

  分析:a[i] *= i = 2   ==>   a[i] = a[i] * (i = 2)

  8.switch

  switch表达式支持的表达式类型:byte, short, char, int, Byte, Short, Character, Integer, 枚举, String

  9.String的最大长度

  String内部是用char[]的,故最大长度就是char[]的最大长度。而char的长度类型最大为int(不能用long),故最大为2147483647。但实际通常不能到这么大,占用的内存太大了(2*2147483647接近4G)。实际能申请的最大值由堆空间的大小来决定。

  10.方法重载,重写,隐藏

  (1)重载:只有参数的类型和数目不同。

  (2)重写:子类某个方法重写父类的某个方法。

  (3)隐藏:重写 + static

  11.方法重写的条件

  假设sub是子类的方法,super是父类的方法。

  (1)sub和super都是实例方法

  如果都是static则是方法隐藏:

public class test2 {
    public static void main(String[] args) {
        foo c = new coo();
        c.m1();
        c.m2();
    }
}

class foo {
    public void m1() { System.out.println("foo: m1");}
    public static void m2() { System.out.println("foo");}
}

class coo extends foo{
    public void m1() { System.out.println("coo: m1");}
    public static void m2(){ System.out.println("coo");}
}

  结果: coo: m1   foo

  分析:重写的方法能通过RTTI,用的是coo的方法。而加了static后变为方法隐藏,不能通过RTTI,用的是foo的方法。

  (2)sub的签名是super的子签名

   比如void print(List l)是void print(List<Number> l)的子签名。  

  (3)sub的返回类型是super返回类型的可替换类型

  (4)sub的访问权限不能低于super

  (5)sub不能抛出比super更多的异常

  12.构造器

    构造器既不是方法也不是成员。

    显式构造器调用语句(this/super)只能在构造器的第一句。

    构造器不能被子类继承,只能显式用super调用。

    是new创建了对象而不是构造器。

    构造器和类的方法中都有一个隐藏的参数this

  13.引用类型:

    (1)强引用:没有引用指向该对象时,该对象会被回收。

    (2)弱引用:如果一个对象只有弱引用,每次垃圾回收时都会被回收。

    (3)软引用:如果只有软引用,当JVM内存内存不足就会回收。

    (4)幻影引用:如果只有幻影引用,任何时候都可能被回收

Java碎片知识(笔记)的更多相关文章

  1. java基础知识-笔记整理

    1.查看已安装jdk文件路径 CMD输入java -verbose.   2.java学习提升路线 java学习视屏地址: http://www.icoolxue.com/album/show/38 ...

  2. Java基础知识笔记(八:集合类)

    目录 1  集合类简介  2  List介绍及简单使用 2.1  LinkedList介绍及简单使用 2.2  ArrayList介绍及简单使用 2.3  Vector介绍及简单使用 2.3.1  S ...

  3. Java基础知识笔记(五:多线程的同步问题)

    编写多线程程序往往是为了提高资源的利用率,或者提高程序的运行效率,或者更好地监控程序的运行过程等.多线程同步处理的目的是为了让多个线程协调地并发工作.对多线程进行同步处理可以通过同步方法和同步语句块实 ...

  4. Java基础知识笔记(六:网络程序设计)

    一.统一资源定位地址(URL) (1)网络地址 在网络上,计算机是通过网络地址标识.网络地址通常有两种表示方法,第一种表示方法通常采用4个整数组成,例如: 166.111.4.100表示某一网站服务器 ...

  5. Java基础知识笔记(七:接口、变量作用域和参数传递)

    一.接口 Java语言不允许一个子类拥有多个直接父类,即任何子类只能有一个直接父类.但允许一个类实现多个接口,即在定义类的接口名称列表中可以包含1个或多个接口名称,从而实现多重继承的特性.接口的定义格 ...

  6. Java基础知识笔记(四:多线程基础及生命周期)

    一.多线程基础 编写线程程序主要是构造线程类.构造线程类的方式主要有两种,一种是通过构造类java.lang.Thread的子类,另一种是通过构造方法实现接口java.lang.Runnable的类. ...

  7. Java基础知识笔记(三:文件与数据流)

    一.输入流与输出流 输入流将数据从文件.标准输入或其他外部输入设备中加载到内存.输出流的作用则刚好相反,即将在内存中的数据保存到文件中,或传输给输出设备.输入流在Java语言中对应于抽象类java.i ...

  8. Java基础知识笔记(二:泛型和枚举)

    1.泛型 与面向对象的多态性相类似,应用泛型可以提高程序的复用性.与多态性不同的是,应用泛型可以减少数据的类型转换,从而提高代码的运行效率.泛型实际上是通过给类或接口增加类型参数实现的.不带泛型的类的 ...

  9. Java基础知识笔记(一:修饰词、向量、哈希表)

    一.Java语言的特点(养成经常查看Java在线帮助文档的习惯) (1)简单性:Java语言是在C和C++计算机语言的基础上进行简化和改进的一种新型计算机语言.它去掉了C和C++最难正确应用的指针和最 ...

随机推荐

  1. hdu5119 dp

    题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=5119 题意: 输入T组数据,每组数据包括两个数n和m,接下来n个数,这n个数可以随意取( ...

  2. express-20 REST API和JSON

    简介 "Web服务"是一个通用术语,指任何可以通过HTTP访问的应用程序编程界面(API); 我们的重点是提供"REST风格"的服务,与其交互要更直接得多. R ...

  3. 门店 车销 批发送货 商超 快销专用扫描打印开单手持PDA移动销售管理系统

    门店 车销 批发送货 商超 快销专用扫描打印开单手持PDA移动销售管理系统的详细介绍 一. 以PDA等移动终端为媒介,随时随地掌握门店信息. 二. 后台集成了数据统计.多指标分析.销售.库存.会员管理 ...

  4. NOIP201103瑞士轮【B002】

    [B002]瑞士轮[B级]出自附中OJ————————————————————————————————————————————————————————————————————————————————— ...

  5. 使用frameset时的target属性

    http://blog.sina.com.cn/s/blog_8f82e8280101bwx9.html

  6. Open CV 图像显示(1)

      演示:读入一张图片,并显示   #include "stdafx.h"   #include <opencv2/core/core.hpp>   #include  ...

  7. HDU5727 Necklace(枚举 + 二分图最大匹配)

    题目大概说有n个yang珠子n个yin珠子,要交替串成一个环形项链,有些yang珠子和某个yin珠子相邻这个yang珠子会不高兴,问最少有几个yang珠子不高兴. 自然会想到直接用状压DP去解,转移很 ...

  8. COGS738 [网络流24题] 数字梯形(最小费用最大流)

    题目这么说: 给定一个由n 行数字组成的数字梯形如下图所示.梯形的第一行有m 个数字.从梯形的顶部的m 个数字开始,在每个数字处可以沿左下或右下方向移动,形成一条从梯形的顶至底的路径.规则1:从梯形的 ...

  9. node.js文件系统

    FS文件系统 第一次用这个的时候非常爽,可以在代码层编写“增删改查”文件的功能.分解里面提供的方法,接下来我们从头创建开始,最后删除文件结束,一套流程接下fs文件系统的神奇. 要使用fs文件系统就要引 ...

  10. 【BZOJ】3676: [Apio2014]回文串

    http://www.lydsy.com/JudgeOnline/problem.php?id=3676 题意:给一个串求回文串×出现次数的最大值.(|S|<=300000) #include ...