Java总结大全

           Java总结大全

 1在进行变量定义时候 不要超过其范围。第一字符用单引号字符串用双引号

2如果为数组分配了内存空间及指定了数组的大小 那么其长度就不可改变了

3因为使用字符串常量 直接使用一个String对象的效率 要高于使用new关键字初始化方式所以在程序中建议使用直接初始化方式

 4除非是内部类 否则一般的类不能使用private protected 关键字

5使用this关键字只可以 完成对构造方法的调用 其他的一般的方法不能这样使用

6在类的设计中 一般把类的成员变量 定义为private 方法定义为public 设定set get

6子类覆盖父类的方法时 覆盖方法的返回值 类型是可以是原来返回类型的子类型

7在子类调用父类的构造方法中  使用super 对父类构造方法的调用一定是子类构造方法的第一句

8当把一个对象类型转换成一种类型时  对象类型和新类型  需要在同一个类的结构中 且9类与类之间存在继承关系才可以进行正确转换

10所谓动态绑定 是指只有在程序运行时 才能正确的判断对象的类型

 11动态绑定方法不包括 private static final 因为使用这些关键字 修饰的方法 编译器可以很准确的知道调用那个方法 不需要进行动态绑定

12Packet 必须要放在第一句

13在实际应用中 最好显示的指明类 方法 属性 因为对于一个默认的类来说 其他人可以在14包内加入新的类 不利于程序的安全性  最好使用 public private protected

15使用this来引用成员变量 也仅限于 在构造方法和set方法的隐藏成员变量的时候调用

16Java中静态变量可以通过创建对象来访问 但是一般情况下 使用类明来访问

17静态方法中 不能初始化对象

18判断对象相等 objequals 两个对象的hashcode值一定相等 相反不一定

19不能通过 new thread().start() 方法产生一个线程如果这样做是没有意义的  20thread.run()方法只有方法的声明 没有方法的主题

21出现死锁后 如果想继续运行别的代码 可以使 ctrl +c

 

1. 两种从键盘读取字符的输入方式

AInputStreamReader reader=new InputStreamReader(System.in);

BufferedReader br=new BufferedReader(reader);

try {

    String s=br.readLine();

} catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

}

 

BScanner input=new Scanner(System.in);

String s=input.nextint();

2. 多线程的方法实现 (两种)(实现Runnable接口 继承thread

 Public class jiekou implements Runnable{

    Public void run(){}

}

  Public class jicheng extends thread{

  Public void run(){}

  }

3. 实现线程的同步方法(synchronized  lock  wait() notify()

package xianchengtongbu;

//使用wait notify 方法

public class Xianchengtongbu2 {

  public static void main(String []args){

      Staff s=new Staff();

      Thread produceThread=new Thread(new producer(s));

      Thread getThread=new Thread(new Consumer(s));

      produceThread.start();

      getThread.start();

  }

}

//staff店员的意思

class Staff{

    private int i=0;

  //从工厂拿到产品

    public synchronized void addProducer(){

        if(i<20&i>0){

            i++;

            System.out.println("生产者生产地"+i+"产品");

            notifyAll();

        }else{

        try {

            wait();

        } catch (InterruptedException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

        }

    }

    //消费者从店里拿到产品

    public synchronized void getProducer(){

        if(i>0){

            i--;

            System.out.println("生产者生产地"+i+"产品");

            notifyAll();

        }else{

        try {

            wait();

        } catch (InterruptedException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

        }

    }

   

}

//生产者

class  producer implements Runnable{

    Staff s;

    public producer(Staff s){

        this.s=s;

    }

    public void run(){

        System.out.println("生产者开始生产产品");

        while(true){

            s.addProducer();

        }

       

    }

   

}

//消费者

class Consumer implements Runnable{

    Staff s;

    public Consumer(Staff s){

        this.s=s;

    }

    public void run(){

       

        System.out.println("开始消费产品");

        while(true){

            s.getProducer();

        }

    }

}

 

 

package xianchengtongbu;

 

import java.util.concurrent.locks.Lock;

import java.util.concurrent.locks.ReentrantLock;

 

public class Thread_tongbu {

    int i=100;

    //线程同步方法

 public synchronized void sell1(){

     boolean flag=true;

      if(i>0){

          i--;

          System.out.println(Thread.currentThread().getName());

      }else{

          flag=false;

      }

      try {

        Thread.sleep(15);

    } catch (InterruptedException e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

    }

 }

 //线程同步代码块

 public void sell2(){

     boolean flag=true;

     synchronized(this){

         if(i>0){

              i--;

              System.out.println(Thread.currentThread().getName());

          }else{

              flag=false;

          }

          try {

            Thread.sleep(15);

        } catch (InterruptedException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

     }

 }

 //lock 同步方法

 

  public void sell3(){

      Lock lock =new ReentrantLock();

      boolean flag=true;

      lock.lock();

      if(i>0){

          i--;

          System.out.println(Thread.currentThread().getName());

      }else{

          flag=false;

      }

      lock.unlock();

      try {

            Thread.sleep(15);

        } catch (InterruptedException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

  }

 

  

}

4.网络编程实例:

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.ServerSocket;

import java.net.Socket;

import java.net.UnknownHostException;

 

public class Music_copy {

   

  public void send(){

    try {

        Socket s=new Socket("localhost",3434);

        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));

        bw.write("你好");

        bw.close();

    } catch (UnknownHostException e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

    } catch (IOException e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

    } 

   

  }

  public void service(){

      try {

        ServerSocket s=new ServerSocket(3434);

        Socket s1=s.accept();

        BufferedReader br=new  BufferedReader(new InputStreamReader(s1.getInputStream()));

        String a="";

        a=br.readLine();

        System.out.println(a);

        s1.close();

    } catch (IOException e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

    }

     

  }

}

 

 

4. 实现排序的几种排序的方法(基于集合 数组)

你可能感兴趣的:(java)