zoukankan      html  css  js  c++  java
  • 再探java基础——零碎基础知识整理

     

    1.java是解释型语言。java虚拟机能实现一次编译多次运行。

    2.JDKjava software Development kit 软件开发包),JREjava Runtime Environment java运行环境)。

    3.javac编译java程序,java运行java程序。

    4.一个文件最多有一个public class

    5.javaswitch语句只能探测int类型值(JDK1.6以前)

    6.java中一个字节是八位,一个字符占两个字节(16unicode字符串)。

    7.内存中byte1个字节,int4个字节,long类型占8个字节;float4个字节,double8个字节;boolean类型占1个字节;

    8.java不提供运算符的重载。

    9.static方法中不能访问非static的成员。static方法是指在函数前面加上static限定符,如:public static vooid main(String args[]);public static void print();

    10.约定俗成的给package取名时把自己公司的域名倒过来,后面再跟上项目名。如:cn.edu.jxau.Game24

    11.默认的访问权限是default.

    12.接口和接口之间可以继承,类和类之间可以继承,但是类和接口之间只能通过类来实现接口。一个类只能继承一个父类,但可以实现多个接口。

    13.数组

    一维数组的形式:

    (1),  int a[]; a = new int[5];  等同于 int a[] = new int[5];
    (2),  int[] a; a = new int[5];  等同于  int[] a = new int[5];
    二维数组的形式:

    int a[][] = {{1,2}, {3,4,5,6}, {7,8,9}};二维数组可看成以数组为元素的数组。
     java中多维数组的声明和初始化应按从高维到低维的顺序进行,如:
    方法(1
    int a[][] = new int[3][];

        a[0] = new int[2];

        a[1] = new int[4];

        a[2] = new int[3];//正确

       int t[][] = new int[][4];//非法

     方法(2);
     int a[][] = new int[3][5];//正确,分配一个三行五列的二维数组。

    学习CC++的很容易出错

    14.增强的for循环
     优点:增强的for循环对于遍历arraycollection的时候相当的简便。例如:

    import java.util.*;

    public class EnhancedFor {

        public static void main(String args[]) {

            int arr[] = {1,2,3,4,5};

            for(int i:arr) {

                System.out.println(i);

            }

            

            Collection c = new ArrayList();

            c.add(new String("sss") );

            c.add(new String("aaa") );

            c.add(new String("bbb") );

            

            for(Object o:c)

                System.out.println(o);

        }

    }

     缺点:数组,不能方便地访问下标值;

    总结:除了简单遍历并读取其中的内容外,不建议使用增强的for循环。

    15.泛型
     JKD1.4以前类型不明确:
     装入集合的类型都被当作Object对待,从而失去自己的实际类型;从集合中取出时往往需要转型,效率低,容易产生错误。
     解决办法:
     在定义集合的时候同时定义集合的类型;
     可以在的定义Collection的时候指定;
     也可以在循环时用Iterator指定。
     好处:
     增强程序的可读性和稳定性。

     

    16.线程的基本概念:
    1),线程是一个程序内部的顺序控制流。
    2),线程和进程的区别:
    每个进程都有独立的代码和数据空间(进程上下文),进程间切换会有较大的开销;
    线程可以看成时轻量级的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计时器(pc),线程切换的开销小;
    多进程:在操作系统中能同时运行多个任务(程序);
    多线程:在同一个应用程序中有多个顺序流同时执行;

    17.线程的实现

    Java的线程通过java.lang.Thread类来实现。VM启动时会有一个由主方法(public static void main(){} )所定义的线程。可以通过创建Thread的实例来创建新的线程。每一个线程都通过特定的Thread对象的方法run()来完成其操作的,方法run()为线程体。通过调用Thread类的start()方法来启动一个线程。

    18.能使用接口的时候不要从Thread类继承,因为用接口不仅可以实现接口的方法,而且还可以继承其他的类。

    19.Sleep方法:Thread的静态方法(public static void sleep (long millis) throws InterruptedException) 使得当前线程休眠(暂时停止执行millis毫秒);
    Join方法:合并某个线程;
    Yield方法:让出CPU,给其他线程执行的机会。

    20.synchronized (this) :锁定当前对象,在执行当前这个对象时不应许其他线程打断插入。使用的方式有:
    1),

    class Timer {

    private static int num = 0;

    public synchronized void add(String name) { 

    //执行这个方法的过程中锁定当前对象。

    num ++;

    try {

    Thread.sleep(1);

    catch( InterruptedException e) {

    return;

    }

    System.out.println(name + ",你是第" + num +"使用Timer的线程。");

    }

    }

    (2)

    class Timer {

    private static int num = 0;

    public  void add(String name) { 

    synchronized(this) {  //锁定大括号这个区域的代码段

    num ++;

    try {

    Thread.sleep(1);

    catch( InterruptedException e) {

    return;

    }

    System.out.println(name + ",你是第" + num +"使用Timer的线程。");

    }

     

    21.wait();使用wait()的前提是用synchronized锁住该方法。notify的作用是叫醒其它线程,notifyAll的作用是叫醒其它多个线程。

    22.wait方法和sleep方法的区别:
    1),wait方法是Object类的方法,sleep方法是Thread类的方法。
    2),wait时,别的线程可以访问锁定的对象;调用wait方法时必须锁定该对象。
    3),sleep时,别的线程不可以访问锁定对象。

     

  • 相关阅读:
    Lua脚本语法说明(修订)
    C++ 程序文档生成器介绍(doxygen)
    [转]最快速度找到内存泄漏
    MyEclipse 8.5下安装tomcat插件
    Linux解压rar文件(unrar安装和使用,分卷解压)
    禁止root用户远程登录或者禁止其他用户登录而不删除它
    linux配置IP的方法
    log4j xml配置详解
    Sqlldr使用介绍
    Linux查看CPU和内存使用情况
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3348007.html
Copyright © 2011-2022 走看看