Java编程详解

发布时间:2023-05-20

一、Java语言概述

Java语言是一种类C++语言,是由Sun Microsystems于1995年推出的一种面向对象的计算机编程语言。Java语言特色如下: 1.平台无关性

public class HelloWorld{
   public static void main(String[] args){
      System.out.println("Hello, World!");
   }
}

程序被编译成字节码,而不是特定操作系统平台的机器码。Java虚拟机(JVM)会将字节码解释为相应平台的机器码,因此Java程序可以在不同操作系统平台上运行。 2.面向对象

class Car{
    private String make;
    private String model;
    private int year;
    public Car(String make, String model, int year){
        this.make = make;
        this.model = model;
        this.year = year;
    }
    public String getMake(){
        return make;
    }
    public String getModel(){
        return model;
    }
    public int getYear(){
        return year;
    }
}

Java语言支持面向对象编程,可以定义类、对象、方法、属性等,方便维护和扩展。 3.垃圾回收机制 Java使用自动垃圾回收机制,程序员不需要手动进行内存管理。JVM会检查对象是否没有任何引用指向,如果是,JVM就会自动释放该对象所占用的内存。这也是Java程序安全性高的一个原因,因为它可以尽可能地减少内存泄漏和访问越界等问题。

二、Java开发环境

Java开发环境有两个核心部分:Java Development Kit (JDK)和集成开发环境(Integrated development environment,IDE)。 1.JDK JDK包括Java编译器、Java虚拟机、类库等,是Java程序开发的必备环境。下面是一个简单的Hello World程序:

public class HelloWorld{
   public static void main(String[] args){
      System.out.println("Hello, World!");
   }
}

2.IDE IDE提供可视化界面,高级代码编辑器、错误检查、代码调试等功能,是Java开发的重要组成部分。Eclipse是最流行的Java IDE之一,下面是一个Eclipse IDE的示例:

三、 Java网络编程

Java提供了基于TCP/IP协议的网络编程功能,可以方便地实现网络应用程序。 1.Socket编程 Socket编程是Java网络编程的核心,可以实现通过不同计算机之间进行数据传输。下面是Socket编程的一个简单示例:

import java.net.*;
import java.io.*;
public class GreetingClient{
   public static void main(String [] args){
      String serverName = args[0];
      int port = Integer.parseInt(args[1]);
      try{
         System.out.println("连接到主机:" + serverName + " ,端口号:" + port);
         Socket client = new Socket(serverName, port);
         System.out.println("远程主机地址:" + client.getRemoteSocketAddress());
         OutputStream outToServer = client.getOutputStream();
         DataOutputStream out = new DataOutputStream(outToServer);
         out.writeUTF("Hello from " + client.getLocalSocketAddress());
         InputStream inFromServer = client.getInputStream();
         DataInputStream in = new DataInputStream(inFromServer);
         System.out.println("服务器响应: " + in.readUTF());
         client.close();
      }catch(IOException e){
         e.printStackTrace();
      }
   }
}
  1. HTTP编程 Java也可以用来实现基于HTTP协议的网络编程,可以用来构建Web应用程序。下面是使用Java实现GET请求的示例:
import java.net.*;
import java.io.*;
public class HttpURLConnectionDemo{
   public static void main(String[] args) throws Exception {
      URL url = new URL("https://www.baidu.com");
      HttpURLConnection con = (HttpURLConnection) url.openConnection();
      con.setRequestMethod("GET");
      con.setRequestProperty("User-Agent", "Mozilla/5.0");
      int responseCode = con.getResponseCode();
      System.out.println("GET Response Code :: " + responseCode);
      if (responseCode == HttpURLConnection.HTTP_OK) { 
          BufferedReader in = new BufferedReader(new InputStreamReader(
                  con.getInputStream()));
          StringBuffer response = new StringBuffer();
          String inputLine;
          while ((inputLine = in.readLine()) != null) {
              response.append(inputLine);
          } in.close();
          System.out.println(response.toString());
      } else {
          System.out.println("GET request not worked");
      }
   }
}

四、 Java并发编程

Java支持多线程编程,可以提高程序的效率。下面是Java多线程编程的一个简单示例:

class PrintThread implements Runnable{
   private Thread t;
   private String threadName;
   PrintThread( String name){
       threadName = name;
       System.out.println("Creating " +  threadName );
   }
   public void run() {
       System.out.println("Running " +  threadName );
       try {
           for(int i = 4; i > 0; i--) {
              System.out.println("Thread: " + threadName + ", " + i);
              // 让线程睡眠一会
              Thread.sleep(50);
           }
       }catch (InterruptedException e) {
           System.out.println("Thread " +  threadName + " interrupted.");
       }
       System.out.println("Thread " +  threadName + " exiting.");
   }
   public void start (){
       System.out.println("Starting " +  threadName );
       if (t == null){
          t = new Thread (this, threadName);
          t.start ();
       }
   }
}
public class TestThread {
   public static void main(String[] args) {
       PrintThread R1 = new PrintThread( "Thread-1");
       R1.start();
       PrintThread R2 = new PrintThread( "Thread-2");
       R2.start();
   }   
}

五、Java图形界面编程

Java可以使用Swing等库实现图形化界面,可以实现可视化的应用程序。下面是一个简单的Java Swing示例:

import javax.swing.*;
public class HelloWorldSwing{
   private static void createAndShowGUI(){
      JFrame frame = new JFrame("HelloWorldSwing");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      JLabel label = new JLabel("Hello World");
      frame.getContentPane().add(label);
      frame.pack();
      frame.setVisible(true);
   }
   public static void main(String[] args){
      javax.swing.SwingUtilities.invokeLater(new Runnable(){
         public void run(){
            createAndShowGUI();
         }
      });
   }
}

六、Java数据库编程

Java支持访问各种数据库,通过JDBC驱动,可以方便进行数据库编程。下面是一个简单的JDBC示例:

import java.sql.*;
public class JDBCDemo {
   static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
   static final String DB_URL = "jdbc:mysql://localhost/EMP";
   static final String USER = "username";
   static final String PASS = "password";
   public static void main(String[] args) {
      Connection conn = null;
      Statement stmt = null;
      try{
         Class.forName(JDBC_DRIVER);
         conn = DriverManager.getConnection(DB_URL,USER,PASS);
         stmt = conn.createStatement();
         String sql;
         sql = "SELECT id, first, last, age FROM Employees";
         ResultSet rs = stmt.executeQuery(sql);
         while(rs.next()){
            int id  = rs.getInt("id");
            int age = rs.getInt("age");
            String first = rs.getString("first");
            String last = rs.getString("last");
            System.out.print("ID: " + id);
            System.out.print(", Age: " + age);
            System.out.print(", First: " + first);
            System.out.println(", Last: " + last);
         }
         rs.close();
         stmt.close();
         conn.close();
      }catch(SQLException se){
         se.printStackTrace();
      }catch(Exception e){
         e.printStackTrace();
      }finally{
         try{
            if(stmt!=null) stmt.close();
         }catch(SQLException se2){
         }try{
            if(conn!=null) conn.close();
         }catch(SQLException se){
            se.printStackTrace();
         }
      }
      System.out.println("Goodbye!");
   }
}