【无标题】

本文介绍了Java的跨平台特性,详细讲解了Java的运行机制,包括Java虚拟机JVM和垃圾收集机制。接着,阐述了Java开发环境的搭建,包括JDK和JRE的区别与安装,以及环境变量的配置。通过一个简单的HelloWorld程序,演示了从编写源代码到编译运行的完整步骤,帮助初学者理解Java程序的生命周期。此外,还讨论了常见的编译错误和解决方案,强调了Java编程中的关键字和标识符的使用规则。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

java笔记分享


一、Java运行机制及运行过程

1.1 跨平台性(Java特点)
跨平台性:通过Java语言编写的应用程序在不同的系统平台上都可以运行。“Write once , Run Anywhere”
原理:只要在需要运行 java 应用程序的操作系统上,先安装一个Java虚拟机 (JVM Java Virtual Machine) 即可。由JVM来负责Java程序在该系统中的运行。

在这里插入图片描述因为有了JVM,同一个Java 程序在三个不同的操作系统中都可以执行。这
样就实现了Java 程序的跨平台性。

1.2 Java两种核心机制

Java虚拟机 (Java Virtal Machine)
垃圾收集机制 (Garbage Collection)

1.2.1 java虚拟机

JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指 令,管理数据、内存、寄存器。
对于不同的平台,有不同的虚拟机。
只有某平台提供了对应的java虚拟机,java程序才可在此平台运行
Java虚拟机机制屏蔽了底层运行平台的差别,实现了**“一次编译,到处运行”**
哈拉在这里插入图片描述

二、Java的开发环境搭建

2.1 明确什么是JDK,JRE

下载 JDK
安装 JDK
配置环境变量
path:windows系统执行命令时要搜寻的路径。
验证是否成功:javac java
选择合适的文本编辑器或 IDE 开发

2.2 什么是JDK,JRE

JDK(Java Development Kit Java开发工具包)
JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了
JRE。所以安装了JDK,就不用在单独安装JRE了。
其中的开发工具:编译工具(javac.exe) 打包工具(jar.exe)等
JRE(Java Runtime Environment Java运行环境)
包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,
如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。

简单而言,使用JDK的开发工具完成的java程序,交给JRE去运行。

2.3 Java语言的环境搭建:JDK、JRE、JVM关系

在这里插入图片描述在这里插入图片描述
• JDK = JRE + 开发工具集(例如Javac编译工具等)
• JRE = JVM + Java SE标准类库

2.4 下载并安装JDK

官方网址:
www.oracle.com
java.sun.com

安装JDK
傻瓜式安装,下一步即可。
建议:安装路径不要有中文或者空格等特殊符号。

如果操作系统是64位的,软件尽量选择支持64位的(除非软件本身不区分)。
当提示安装 JRE 时,正常在JDK安装时已经装过了,但是为了后续使用Eclipse等开发
工具不报错,建议也根据提示安装JRE。

2.5 配置环境变量 path

2.5.1 配置原因

在dos命令行中敲入javac,出现错误提示:
错误原因:当前执行的程序在当前目录下如果不存在,windows系统会在系统中已有的一个名为path的环境变量指定的目录中查找。如果仍未找到,会出现以上的错误提示。所以进入到 jdk安装路径\bin目录下,执行javac,会看到javac参数提示信息。
在这里插入图片描述

每次执行 java 的工具都要进入到bin目录下,是非常麻烦的。可不可以在任何目录下都可以执行java的工具呢?
根据windows系统在查找可执行程序的原理,可以将java工具所在路径定义到
path 环境变量中,让系统帮我们去找运行执行的程序。

9.5.2 配置方法

我的电脑–属性–高级系统设置–环境变量
编辑 path 环境变量,在变量值开始处加上java工具所在目录,后面用 “ ; ”和其他值分隔开即可。
打开DOS命令行,任意目录下敲入javac。如果出现javac 的参数信息,配置成功。
在这里插入图片描述

2.5.3 配置完path环境变量以后的验证

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

三、开发体验HelloWorld

3.1 步骤

  1. 将 Java 代码编写到扩展名为 .java 的文件中。
  2. 通过 javac 命令对该 java 文件进行编译。
  3. 通过 java 命令对生成的 class 文件进行运行。
    在这里插入图片描述

3.1.1 步骤一:编写

选择最简单的编辑器:记事本。
敲入代码
class Test{ }
将文件保存成Test.java,这个
文件是存放java代码的文件,
称为源文件。
在这里插入图片描述
• 第一个Java程序

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

3.1.2 编译

有了java源文件,通过编译器将其编译成JVM可以识别的字节码文件。
在该源文件目录下,通过javac编译工具对Test.java文件进行编译。
如果程序没有错误,没有任何提示,但在当前目录下会出现一个Test.class文
件,该文件称为字节码文件,也是可以执行的java的程序。

3.1.3 运行

有了可执行的java程序(Test.class字节码文件)
通过运行工具java.exe对字节码文件进行执行。
出现提示:缺少一个名称为main的方法。
因为一个程序的执行需要一个起始点或者入口,所以在Test类中的加入public static void main(String[] args){ }
对修改后的Test.java源文件需要重新编译,生成新的class文件后,再进行执行。
发现没有编译失败,但也没有任何效果,因为并没有告诉JVM要帮我们做什么事情,也就是没有可以具体执行的语句。
想要和JVM来个互动,只要在main方法中加入一句System.out.println(“Hello World");因为程序进行改动,所以再重新编译,运行即可。

四、常见的问题及解决办法

4.1 源文件名不存在或者写错

当前路径错误
后缀名隐藏问题
类文件名写错,尤其文件名与类名不一致时,要小心

4.2 声明为public的类应与文件名一致,否知编译失败

编译失败,注意错误出现的行数,再到源代码中指定位置改错
public class与class区别(重点、难点)
1.一个Java源文件中,类中前面的public修饰符是可有可无的。
2.当一个类前面编写public修饰符,则文件名必须与类名一致,否则就出现编译错误。
在这里插入图片描述
3.当一个类前面没有编写public修饰符,则文件名可以与类名不一致,编译成功,并且会自动生成对应类名的字节码文件(可以运行字节码文件,只要有入口)

4.在一个Java源文件中可以编写任意多个类,当编译成功后,会自动生成对应类名的个数的字节码文件,并且可以运行字节码文件(必须保证有入口)
在这里插入图片描述
注意:大多数情况下,一个Java源文件中只编写一个类。
5.一个Java源文件中最多只能有一个类前面编写public修饰符

4.3 总结

学习编程最容易犯的错是语法错误。Java要求你必须按照语法规则编写代码。
如果你的程序违反了语法规则,例如:忘记了分号、大括号、引号,或者拼错了单词,java编译器都会报语法错误。尝试着去看懂编译器会报告的错误信息
Java源文件以“java”为扩展名。源文件的基本组成部分是类(class),如本例中的HelloWorld类。
Java应用程序的执行入口是main()方法。它有固定的书写格式:
public static void main(String[] args) {…}
Java语言严格区分大小写。
Java方法由一条条语句构成,每个语句以“;”结束。
大括号都是成对出现的,缺一不可。
一个源文件中最多只能有一个public类。其它类的个数不限,如果源文件包含一个public类,则文件名必须按该类名命名。

五、关键字

在Java中,具有一定特殊含义的,并且全部小写的称之为关键字

//说明:这是一个非常简单的程序,只是用来向外输出“欢迎大家来学习Java”
class Notes {
    //这是一个main方法,是程序执行的唯一入口,没有main方法程序就无法执行
  public static void main(String args[]){
      //输出语句,用来对外输出指定内容的
      System.out.println("欢迎大家来学习Java");
  }
}

Java中的关键字一览
在这里插入图片描述

六、标识符

6.1 什么是标识符

每个人从出生开始就有一个名字,我门生活中的所有事物也都有名字,这名字是谁规定呢?回答是:造物主,谁生产出来的谁规定名字,在我们的程序中也不例外。
我门自己编写一个程序时,也要给这个程序起一个名字,比如我们的HelloWorld程序。
这个Hello就是这个程序的名字,其实是一个类的名字,会发现这个名字是我们写程序时自己命名的。
每个人从出生开始就有一个名字,我门生活中的所有事物也都有名字,这名字是谁规定呢?回答是:造物主,谁生产出来的谁规定名字,在我们的程序中也不例外。
我门自己编写一个程序时,也要给这个程序起一个名字,比如我们的HelloWorld程序。

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

在Java中,凡是自己可以起名字的地方,都称之为标识符。
比如:对类名、变量名、方法名、参数名等的修饰。

6.2 标识符的命名规则

由26个英文字母大小写,0-9 ,_或 $ 组成
数字不可以开头。
不可以使用关键字和保留字,但能包含关键字和保留字。
Java中严格区分大小写,长度无限制。
标识符不能包含空格。

七、变量

6.1 什么是变量

在Java中,利用声明的方式将某个数据保存下来供程序使用,并且这个数据是可以根据自己需求发生改变的。
在这里插入图片描述

6.1 变量存储数据的语法格式

第一步:声明变量
声明变量的语法格式:数据类型 变量名称;
比如:int a;

第二步:赋值
注意事项:
1.在Java中,赋值使用等号完成,并且将等号右侧的值赋给等号左侧的变量名称。
2.赋值语法格式:变量名称 = 值;
3.比如:a = 18;

6.2 浅谈数据类型

6.2.1 为什么要有数据类型的存在

因为数据是有明确的类型划分的,为了确保变量保留的数据其类型的唯一性,要使用数据类型进行变量的修饰。
比如:18(整型)、3.14(小数点型)
在这里插入图片描述
在这里插入图片描述
其实通过这样的已经验证过正确的程序可以知道。在程序中使用变量保留数据时,必须要在变量名称之前指定其变量的数据类型,以此来表示当前变量存储的是什么样类型的数据,只有这样在程序中才能合法使用变量去保留数据。

这也就解释清楚了一点,就是为什么在变量存储数据的语法格式中声明变量的语法格式:数据类型 变量名称;因为要为变量指定其数据类型,以此来表示当前变量存储的是什么样类型的数据。

6.2.2 常用的数据类型

在这里插入图片描述

6.3 注意

变量的声明和赋值可分开进行
变量声明的同时也可赋值
英文""的作用是原样输出
+是连接符,用于变量的连接

八、运算符

8.1 初识运算符

8.1.1 什么是运算符

变量进行运算时,所用到的符号就是运算符。
在这里插入图片描述

8.1.2 运算符的分类

算术运算符

+	-	*	/	%(求余数,取模)	++	--

赋值运算符

=	+=	-=	*=	/=

关系运算符

>	>=	<	<=	==	!=

逻辑运算符

&&	||	!

三目运算符

?  :

8.2 算术运算符

用于完成变量的加、减、乘、除、取余、运算的。
注意:加号在某些地方也可以用作链接符号

8.2.1 ++运算符

++(自增运算符)
表示自身加1
int a = 5;
int b = ++a + 1;// a = 6, b = 7

++又分为 “前置++”,和“后置++”
前置++:将++编写在变量名称前面;先自身加1,然后再做其他运算
int a = 5;
int b = ++a * 2; //a = 6 b = 12

后置++:将++编写在变量名称后面;先做其他运算,然后再自身加1
int x = 10;
int y = x++ * 3; //x = 11 y = 30

- -运算符

与++同理

8.3 赋值运算符号

8.3.1作用

用于完成变量赋值的。

8.3.2 赋值运算符号的分类

=
将等号右侧的值赋给等号左侧的变量名称
比如:int a = 18;
扩展赋值运算符
+= -= *= /= %=
在Java中,使用扩展赋值运算符时,右侧的值不会改变左侧的数据类型,并且不会进行四舍五入。

8.4 关系运算符号

8.4.1 关系运算符的作用

用于变量(表达式)之间进行关系比较的。
在这里插入图片描述
//true

8.4.2 关系运算符的分类

 > >= < <= == !=
 当条件成立时(满足条件时),则结果为true,否则为false
 true表示真的、正确的,成立的
 false表示假的、错误的,不成立的

8.5 逻辑运算符号

8.5.1 逻辑运算符的作用

用于连接关系表达式的。
在这里插入图片描述

8.5.2逻辑运算符的分类

逻辑与& 逻辑或| 逻辑非! 短路与&& 短路或||
逻辑与&
表示并且、同时
当两个条件都为true,则结果为true,否则为false

在这里插入图片描述
逻辑或|
表示或者
当有一个条件为true,则结果为true,否则为false

在这里插入图片描述逻辑非!
其实也就是:只对true或者false值进行取反

在这里插入图片描述短路与&&
类似于逻辑与,都表示并且、同时
通过运行得到结论:
1.使用短路与和逻辑与的执行结果都一样
2.短路与和逻辑与都表示并且、同时,也就是左右两边的条件都满足(成立)时,结果为true,否则为false
3.当使用短路与时,执行过程可能不同
原因:左边也就是第一个条件为false,则结果直接为false
4.因此得到:当使用短路与时,执行速度相对更快或者执行效率更高
5.建议:使用短路与&&
在这里插入图片描述 短路或||
类似于逻辑或,都表示或者
结论:
1.使用短路或和逻辑或的执行结果都一样
2.都表示或者
3.当使用短路或时,执行过程可能不同
当左边的条件也就是第一个条件为true,则结果直接为true
4.因此得到:当使用短路或时,执行速度相对更快或者执行效率更高
5.建议:使用短路或

在这里插入图片描述

8.6 三目运算符号

8.6.1 什么是三目运算符

在这里插入图片描述

8.6.2 三目运算符的执行流程

先判断条件,如果条件为true,则执行结果1,否则执行结果2
在这里插入图片描述

8.6.3 三目运算符的结论

三目运算符也叫做条件运算符,用于完成条件判断的。
三目运算符的执行流程:先判断条件,如果条件为true,则执行?后的结果1,否则执行:后面的结果2。

8.7 运算符的优先级

在这里插入图片描述

九、键盘接收用户输入

9.1 需求

之前学的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获取用户从键盘的输入。
java.util.Scanner 是 Java1.5 的新特征,我们可以通过 Scanner 类来获取用户的输入。
都是固定格式,大家先不用理解代码的意思,先跟着学会操作,之后讲解面向对象时候就直接明白了这些代码的意思

9.2键盘接收用户输入的操作步骤

第一步:导入包,必须位于当前Java源文件所有类的最前面
import java.util.Scanner;
还可以编写为import java.util.*;
注意:在一个Java源文件中只需要编写一次导入包

第二步:创建Scanner对象
Scanner input = new Scanner(System.in);
注意:一个方法中只需要编写一次创建Scanner对象

第三步:友好提示(可有可无,但是建议编写上)
System.out.print(“请输入:”);

第四步:接收键盘输入
int a = input.nextInt(); //注意:当按回车键,则表示键盘输入完毕,并且将输入的值赋给左侧的变量名称a

double d = input.nextDouble();

String a = input.next(); //注意:在Java中,键盘接收字符串类型时,没有nextString(),而是编写为next()

9.3 使用键盘接收用户输入的时机

需求中如果有未知的数,则就可以编写为键盘接收用户输入,也就是在使用时,值相对更灵活。

总结

java道路任重道远,你我还需共同努力,奔向未来。(文中有什么不对的地方,欢迎批评指教)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值