文章目录
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
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
- 测试代码如下:
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
9.5 compilejava(支持多个类)
支持一个文件包含多个类的定义。
- 测试代码如下:
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(支持多个类)
支持一个文件包含多个类的定义。
- 测试代码如下:
/* 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???
如果您需要相关功能的代码定制化开发,可以留言私信作者;
(✿◡‿◡)
感谢各位童鞋们的支持!
( ´ ▽´ )ノ ( ´ ▽´)っ!!!