提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
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 步骤
- 将 Java 代码编写到扩展名为 .java 的文件中。
- 通过 javac 命令对该 java 文件进行编译。
- 通过 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道路任重道远,你我还需共同努力,奔向未来。(文中有什么不对的地方,欢迎批评指教)