1、简介

Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的高级程序设计语言。
Java 可运行于多个平台,如 Windows, Mac OS 及其他多种 UNIX 版本的系统。
在这里插入图片描述

Java 是一门面向对象编程语言,不仅吸收了 C++ 语言的各种优点,还摒弃了 C++ 里难以理解的多继承、指针等概念。Java 不但可以用来开发网站后台、PC 客户端和 Android APP,还在数据分析、网络爬虫、云计算领域大显身手。

2、下载和安装jdk

2.2 下载jdk

https://www.oracle.com/java/technologies/downloads/#java8

Java SE Development Kit 8u333 Java SE subscribers will receive JDK 8
updates until at least December of 2030.

在这里插入图片描述

具体中间过程就不说了,一直下一步即可,路径保持默认即可!

2.2 配置环境变量

JAVA_HOME=C:\Program Files (x86)\Java\jdk1.8.0
JRE_HOME=C:\Program Files (x86)\Java\jre8
Path+=%JAVA_HOME%\bin;%JRE_HOME%\bin
CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

这里总结了一段一键安装jdk的bat脚本代码如下:

%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
chcp 65001

set jdkpath=C:\Program Files (x86)\Java\jdk1.8.0
set jdkreg=HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

echo 正在安装jdk,请不要执行其他操作
rem start /WAIT C:\jdk-8u221-windows-i586.exe /qn INSTALLDIR=%jdkpath%

set JAVA_HOME=%jdkpath%
set PATH=%PATH%;%%JAVA_HOME%%\bin;%%JAVA_HOME%%\jre\bin
set CLASSPATH=.;%%JAVA_HOME%%\lib\dt.jar;%%JAVA_HOME%%\lib\tools.jar

set RegV=HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

reg add "%jdkreg%" /v "JAVA_HOME" /d "%JAVA_HOME%" /f
reg add "%jdkreg%" /v "Path" /t REG_EXPAND_SZ /d "%PATH%" /f
reg add "%jdkreg%" /v "CLASSPATH" /d "%CLASSPATH%" /f
mshta vbscript:msgbox("Java环境已成功安装!",64,"成功")(window.close)
exit

2.3 常见命令

  • java
    检查jdk是否安装成功,如下图:
java -version

在这里插入图片描述

  • javac
    编译的Java程序,生成.class文件。
javac

在这里插入图片描述

  • javaw
    javaw.exe是相似的和java.exe 是一个win32的GUI应用,应用提供自己的GUI窗口,不启用控制台。

  • javah
    功能说明:C 头文件和 Stub 文件生成器。javah 从 Java 类生成 C 头文件和 C 源文件。这些文件提供了连接胶合,使 Java 和 C 代码可进行交互。

  • javap
    功能说明:Java 类文件解析器。

3、jdk开发

  • 代码文件都在同一个文件夹内
javac HelloWorld.java
java HelloWorld
  • 代码文件在不同的文件夹内(定义包)
javac -d bin HelloWorld.java
java -cp bin;. com.homework.HelloWorld

3.1 测试代码(hello world)

  • HelloWorld.java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World, 爱看书的小沐!");
    }
}

在这里插入图片描述

3.2 测试代码(animal, dog)

  • Animal.java
class Animal {
  void eat() {
    System.out.println("animal : eat");
  }
}
  • Dog.java
class Dog extends Animal {
  void eat() {
    System.out.println("dog : eat");
  }
  void eatTest() {
    this.eat();  
    super.eat();
  }
}
  • Test.java

public class Test {
  public static void main(String[] args) {
    Animal a = new Animal();
    a.eat();
    Dog d = new Dog();
    d.eat();
    d.eatTest();
  }
}

在这里插入图片描述

3.3 测试代码(circle, cylinder)

  • Circle .java
public class Circle{
	
	private double radius;
	
	public Circle(){
		radius = 0;
	}
	
	public Circle(double r){
		radius = r;
	}
	
	public double getRadius() {
		return radius;
	}

	public void setRadius(double radius) {
		this.radius = radius;
	}

	public double getArea() {
		return Math.pow(this.radius, 2)*Math.PI;
	}; 
	
	public double getPerimeter() {
		return this.radius*2*Math.PI;
	}
	
	public static void main(String[] args) {
		Circle c = new Circle(1.234);
		System.out.println("Radius:" + c.getRadius());
		System.out.println("Perimeter" + c.getPerimeter());
		System.out.println("Area" + c.getArea());
	}
}
  • Cylinder .java
public class Cylinder extends Circle{
	
	private double height;

	public Cylinder(double r, double h) {
		this.height = h;
		setRadius(r);
	}
	
	public double getVolume() {
		return getArea()*this.height;
	}	
	
	public static void main(String[] args) {
		Cylinder c = new Cylinder(5.0, 10.0);
		System.out.println("Radius:" + c.getRadius());
		System.out.println("Perimeter" + c.getPerimeter());
		System.out.println("Area" + c.getArea());
		System.out.println("Volume" + c.getVolume());
	}
}

运行结果如下:
在这里插入图片描述

3.4 测试代码(Student, Undergraduate)

  • Student.java
package T1;
public class Test {
    public static void main(String[] args) {
        Student stu = new Student("student", 100);
        stu.show();
        Undergraduate undergraduate = new Undergraduate("Undergraduate", 20, "本科");
        undergraduate.show();
    }
}
class Student {
    private String name;
    private int age;
    public Student() {
        super();
    }
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public void show() {
        System.out.println("名字:" + this.name + "\t年龄:" + this.age);
    }
}
class Undergraduate extends Student {
    private String degree;
    public Undergraduate(String name, int age, String degree) {
        super(name, age);
        this.degree = degree;
    }
    public void show() {
        System.out.println("名字:" + super.getName() + "\t年龄:" + super.getAge() + "\t学位:" + this.degree);
    }
}

3.5 测试代码(webserver)

  • WebTest .java
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class WebTest {
     public static void main(String[] args) {
         try {
             ServerSocket serverSocket = new ServerSocket(80);
             while (true) {
                 Socket client = serverSocket.accept();

                 OutputStream clientOutStream = client.getOutputStream();
                 clientOutStream.write(
                         ("HTTP/1.1 200\n"
                                 + "Content-Type: text/html\n"
                                 + "\n"
                                 + "<h1> Hello, my simple webserver!</h1><br>爱看书的小沐").getBytes()
                 );
                 clientOutStream.flush();
                 clientOutStream.close();
             }
         } catch (IOException e) {
             e.printStackTrace();
         }
     }
 }
 

命令行编译和执行代码如下:
在这里插入图片描述
浏览器中运行如下:
在这里插入图片描述

3.6 测试代码(JavaFX鼠标事件)

  • MainWindow.java
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class MainWindow{
	private JFrame jf;
	
	public MainWindow() {
		jf=new JFrame("爱看书的小沐的第一个Java窗口");
		Container con = jf.getContentPane();
		con.setBackground(Color.yellow);        //设置窗口背景色
		jf.setBounds(50,100,500,200);      //设置窗口在屏幕上的位置和大小
		jf.setVisible(true);
		jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);  //释放当前窗口
		
		//1、用实现MouseListener接口实现
		//jf.addMouseListener(myMouseListener);
		
		//2、用继承MouseAdapter类实现
		jf.addMouseListener(myMouseAdapter);
	}
	
	MouseListener myMouseListener = new MouseListener() {
		
		@Override
		public void mouseReleased(MouseEvent e) {
			System.out.println("鼠标释放");
			//鼠标按下后释放触发
			
		}
		
		@Override
		public void mousePressed(MouseEvent e) {
			System.out.println("鼠标按下");
			//鼠标按下时触发		
			
		}
		
		@Override
		public void mouseExited(MouseEvent e) {
			System.out.println("光标移除");
			//鼠标的光标移出到组件触发
			
		}
		
		@Override
		public void mouseEntered(MouseEvent e) {
			System.out.println("光标移动到组件");
			//鼠标的光标移动到组件触发
			
		}
		
		@Override
		public void mouseClicked(MouseEvent e) {
			System.out.println("鼠标发生过单机事件");
			//鼠标发生单机事件时触发
			if(e.getButton()==e.BUTTON1){    // 判断获取的按钮是否为鼠标的右击     
				jf.setTitle("MouseListener: " + e.getX()+","+e.getY());     // 获得鼠标点击位置的坐标并发送到标签的文字上
			}
		}
	};
	
	MouseAdapter myMouseAdapter = new MouseAdapter() {
		public void mouseClicked(MouseEvent e) {
			//System.out.println("鼠标点击了");
			jf.setTitle("MouseAdapter: " + e.getX()+","+e.getY());
		}
    };
	
	public static void main(String[] args) {
		new MainWindow();
	}
}

在这里插入图片描述

3.7 测试代码(JavaFX分割控件)

  • MainWindow.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*; 

class ImagePanel extends JPanel {
  Image image;

  public ImagePanel() {
    image = Toolkit.getDefaultToolkit().createImage("d:/test/test.gif");
  }

  @Override
  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    if (image != null) {
      g.drawImage(image, 0, 0, this);
    }
  }

}
public class Main {
  
  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
      @Override
      public void run() {

        //myPanel1
        JButton button1 = new JButton("显示滚动条");
        JButton button2 = new JButton("隐藏滚动条");
        JButton button3 = new JButton("退出");
        JPanel myPanel1 = new JPanel();
        myPanel1.setLayout(new GridLayout(3,1,5,5));
        myPanel1.add(button1);
        myPanel1.add(button2);
        myPanel1.add(button3);

        //myPanel2
        JPanel myPanel2 = new ImagePanel();

        //splitPane
        JSplitPane splitPane = new JSplitPane();
        splitPane.setLeftComponent(myPanel1);
        splitPane.setRightComponent(myPanel2);
        splitPane.setDividerSize(1);
        splitPane.setOneTouchExpandable(true);
        splitPane.setContinuousLayout(true);
        splitPane.setDividerLocation(150);

        //frame
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 400);
        frame.setVisible(true);
        frame.setContentPane(splitPane);

        //event
        button3.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            System.exit(0);
          }
        });
      }
    });
  }
}

4、VSCode开发 java

官方网站:https://code.visualstudio.com/

(1)安装插件Extension Pack for Java
(2)安装OpenJDK 11+
(3)settings.json中添加设置如下:

"java.home": "C:\\Users\\tomcat\\Desktop\\microsoft-jdk-17.0.3-windows-x64\\jdk-17.0.3+7",

(4)重启VSCode
在这里插入图片描述
在这里插入图片描述

5、IDEA开发java

官方网站:https://www.jetbrains.com/idea/
在这里插入图片描述

作为一款基于Java的顶级IDE,IntelliJ往往被大型企业所使用。其开发环境能够提供诸如:智能源代码索引、可靠的重构、以及动态代码分析等,独特的企业级功能函数。

IntelliJ IDEA Community Edition(社区版)是一款免费的 Java IDE(集成开发环境),主要用于 Android 应用开发、Scala、Groovy、Java SE 和 Java 编程。

目前,该IDE有两种变体,分别是:免费的社区版和高级的终极版。其中,高级版本是为适应企业级需求而量身定制的。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6、Eclipse开发java

官方网站:https://eclipse.org/
在这里插入图片描述

IBM于2001年末开发并发布了Eclipse。它能够提供的插件数量远超其他IDE。Eclipse通过自带的多种插件和特性函数,来加快程序的开发速度。其中,Junit、testing、MAVEN、Spring Framework和Subversion都有Eclipse对应的插件。

Eclipse 是一款主要用 Java 编写的免费 Java IDE。Eclipse 允许你创建各种跨平台的可用于手机、网络、桌面和企业领域的 Java 应用程序。通过插件,你也可以用其他编程语言开发应用程序,语言包括C、C ++、JavaScript、Perl、PHP、Prolog、Python、R、Ruby(包括 Ruby on Rails 框架),等等。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7、Netbeans开发java

官方网站:https://netbeans.org/
在这里插入图片描述

NetBeans拥有庞大的Java开发人员用户群,其中包括面向企业、嵌入式系统、Web、移动、桌面应用等领域的专业开发人员。目前,Oracle已将NetBeans作为其Java 8及更高版本的官方IDE。

1996年,NetBeans源于捷克的一个学生项目,其最初版是在2014年被发布的。由于免费且开源,因此它非常适合学生和初学者。您可以在该开发平台上找到所有主流框架的插件。其出色的功能,可被用于不同的环境与应用目的。

NetBeans是完全使用Java编写的,可以支持Windows、Mac、Oracle、Solaris和 Linux系统。该开发平台为端到端的软件开发生命周期,提供了需求分析,应用程序设计、开发、调试、分析和测试等一条龙的服务。

NetBeans IDE 既可用于 Java 开发,也支持其他语言,特别是 PHP、C/C ++,和 HTML5。

在这里插入图片描述

在这里插入图片描述

8、Android Studio开发java

https://developer.android.google.cn/studio/

Android Studio provides the fastest tools for building apps on every type of Android device.

在这里插入图片描述

9、在线开发Java代码的网站

下面几个网站都是简易的Java运行环境,只能运行JDK自带的函数,不能导入包,更不能运行外部项目。

9.1 w3cschool

https://www.w3cschool.cn/tryrun/runcode?lang=java-openjdk

在这里插入图片描述

  • 测试代码如下:
import java.text.SimpleDateFormat;
import java.util.Date;

public class Main {
	private String name;

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	public static void main(String[]args) {
	    Main a = new Main();
	    a.setName("爱看书的小沐");
	    
	    SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z");
        Date date = new Date(System.currentTimeMillis());

	    String s = String.format("Hello %s!", a.getName());
		System.out.println(s);
		System.out.println(formatter.format(date));
	}
}

9.2 菜鸟教程

https://c.runoob.com/compile/10/
菜鸟在线Java运行,也能运行其他主流的编程语言,如:Python、C、PHP、Node.js、C#、Ruby、Go等。
在这里插入图片描述

  • 测试代码如下:
import java.util.ArrayList;

public class Cat {  
    public void eat() {  
        System.out.println("吃鱼");  
    }  
    public void work() {  
        System.out.println("抓老鼠");  
    }  
	public void speak() {  
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("postman");
        sites.add("swagger");
        sites.add("mock");
        sites.add("jmeter");
        System.out.println(sites);
    }
	public static void main(String[] args) {
		System.out.println("Hello Cat!");
		
		Cat cat = new Cat();
		cat.eat();
		cat.work();
		cat.speak();
	}
} 

9.3 在线工具tool.lu

https://tool.lu/coderunner/
在这里插入图片描述

在这里插入图片描述

  • 测试代码如下:
import java.util.LinkedList;

public class Untitled {
	public static void main(String[] args) {
		LinkedList<String> sites = new LinkedList<String>();
		sites.add("Google");
		sites.add("Runoob");
		sites.add("Taobao");
		
		sites.addFirst("Wiki");
		System.out.println(sites);
		System.out.println("hello 爱看书的小沐!");
	}
}

9.4 dooccn

https://www.dooccn.com/java/
在这里插入图片描述

9.5 compilejava(支持多个类)

https://www.compilejava.net/

支持一个文件包含多个类的定义。

在这里插入图片描述

  • 测试代码如下:
class Shape {
    void draw() {}
}
 
class Circle extends Shape {
    void draw() {
        System.out.println("Circle.draw()");
    }
}
 
class Square extends Shape {
    void draw() {
        System.out.println("Square.draw()");
    }
}

// tip: each public class is put in its own file
public class main1
{
    // tip: arguments are passed via the field below this editor
    public static void main(String[] args)
    {
        Square t = new Square();
        t.draw();
        System.out.println("Hello, 爱看书的小沐!");
    }
}

9.6 rextester(支持多个类)

https://rextester.com/l/java_online_compiler
在线编译器rextester打开即用,不需要登陆,也不需要下载,安装,配置等。

支持一个文件包含多个类的定义。

在这里插入图片描述

  • 测试代码如下:
//'main' method must be in a class 'Rextester'.
//openjdk version '11.0.5' 

import java.util.*;
import java.lang.*;

abstract class Animal {  
    abstract void eat();  
}  
  
class Cat extends Animal {  
    public void eat() {  
        System.out.println("吃鱼");  
    }  
    public void work() {  
        System.out.println("抓老鼠");  
    }  
}  
  
class Dog extends Animal {  
    public void eat() {  
        System.out.println("吃骨头");  
    }  
    public void work() {  
        System.out.println("看家");  
    }  
}

class Rextester
{  
    public static void main(String args[])
    {
        System.out.println("Hello, 爱看书的小沐!");
        System.out.println("来了一只小猫!");
        Cat c = new Cat();
        c.eat();
        c.work();
        System.out.println("来了一只小狗!");
        Dog d = new Dog();
        d.eat();
        d.work();
        
    }
}

9.7 replit(支持多个类)

https://replit.com/@fxyublib/SlategreySlightApplescript#Main.java

支持一个文件包含多个类的定义。需要用户注册登陆
在这里插入图片描述

  • 测试代码如下:
class Animal {
  void eat() {
    System.out.println("animal : eat");
  }
}
 
class Dog extends Animal {
  void eat() {
    System.out.println("dog : eat");
  }
  void eatTest() {
    this.eat();   // this 调用自己的方法
    super.eat();  // super 调用父类方法
  }
}
 
public class Main {
  public static void main(String[] args) {
    System.out.println("Hello, 爱看书的小沐 2022!");
    System.out.println("");
    System.out.println("Rain rain go away,");
    System.out.println("Come again another day,");
    System.out.println("Little Betty wants to play,");
    System.out.println("Rain rain go away.");
    System.out.println("");
    Animal a = new Animal();
    a.eat();
    Dog d = new Dog();
    d.eatTest();
  }
}

9.8 ideone(支持多个类)

https://www.ideone.com/kGDKya

支持一个文件包含多个类的定义。

在这里插入图片描述

  • 测试代码如下:
/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

class Animal{
   public void move(){
      System.out.println("动物可以移动");
   }
}
 
class Dog extends Animal{
   public void move(){
      System.out.println("狗可以跑和走");
   }
}

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
	public static void main (String[] args) throws java.lang.Exception
	{
		// your code goes here
		System.out.println("hello, 爱看书的小沐 2022");  
		System.out.println("Hickory,dickory,dock,");  
		System.out.println("The mouse ran up the clock,");  
		System.out.println("The clock struck one,");  
		
		Dog d = new Dog();
		d.move();
	}
}

10、Linux环境中搭建Java开发环境

10.1 下载jdk

https://www.oracle.com/java/technologies/downloads/#java8-linux

在这里插入图片描述

10.2 安装jdk

将下载好的安装包上传到Linux环境中(比如WinSCP)。

cd /usr/local

输入ll查看传入Linux环境的安装包,然后使用tar命令解压该压缩包。

tar -zxvf /usr/local/jdk-8u181-linux-x64.tar.gz

可以给jdk包修改名字,使用mv命令。

mv /usr/local/jdk1.8.0_181 /usr/local/java

修改配置文件,配置环境变量,在命令行输入:

vi /etc/profile

输入“G”定位到最后一行,按“i”进入编辑模式,在最下面添加如下几行信息:

export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=$JAVA_HOME/jre

让配置文件生效,可以输入如下命令或者是重启系统:

source /etc/profile
 
重启命令:
init 6
reboot

查看安装情况:

java -version

在这里插入图片描述

结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!


Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐