java入门
java语言特性【开源、免费、纯面向对象、跨平台】
-
简单性:相对而言的,例如java中不再支持多继承,c++是支持多继承的,多继承比较复杂,c++中有指针,java中屏蔽了指针的概念。所以相对来说java是简单的。Java语言底层是c++实现的,不是c语言。
-
面向对象:java是纯面向对象的,更符合的人思维模式,更容易理解。
-
可移植性:什么是可移植性?java程序可以做到一次编译,到处运行。也就是说Java程序可以在Windows操作系统上运行。不做任何修改,同样的java程序可以直接放在Linux操作系统 上运行。这个被称为java程序的可移植性,或者跨平台。Windows操作系统内核和linux操作系统的内核肯定不同,他们这两个操作系统执行指令的方式也是不一样的。结论:显然java程序不能直接和操作打交道。因为java程序只有一份。操作系统执行原理都不同。SUN的团队很聪明,他们想了一个办法,他们让java程序运行在一个虚拟的计算机当中,这个虚拟的计算机叫做java虚拟机,简称jvm,java虚拟机再和底层的操作系统打交道。
-
多线程:
-
健壮性:和自动垃圾回收机制有关,自动垃圾回收机制简称GC机制。java语言运行过程中产生的垃圾是自动回收的,不需要程序员关心。
-
安全性:
......
java的加载与执行
-
java程序的运行包括两个非常重要的阶段
- 编译阶段
- 运行阶段
-
编译阶段
- 编译阶段主要的任务是检查java源程序是否符合java语法
符合java语法则能够生成正常的字节码文件(xxx.class)
不符合java语法规则则无法生成字节码文件
- 字节码文件中不是纯粹的二进制,这种文件无法在操作系统当中直接执行。
- 编译阶段的过程:
*程序员需要在硬盘的某个位置<位置随意>新建一个.java扩展名的文件,该文件被称 为java源文件,源文件当中编写的是java源文件/源程序。
*java程序员需要使用jdk当中自带的javac.exe命令进行java程序的编译
javac怎么用呢?在哪里用呢?
- 在Dos命令窗口中使用
- javac的使用规则:
javac java源文件的路径
javac是一个java编译器工具/命令。
*一个字节文件/class文件是最终要执行的文件,所以说class文件生成之后,java源文件删 除并不会影响java程序的执行。但是一般java源程序不要删除,因为class文件最终执行结 果可能不是我们想要的,那么这个时候需要回头再重新修改java源程序,然后将java源程 序重新编译生成新的class文件,然后再运行这个class程序,生成新的效果。
*编译结束之后,可以将class文件拷贝到其他操作系统当中运行。【跨平台】
* 运行阶段【可以在其它操作系统当中,跨平台】
- jdk安装之后,除了自带一个javac.exe之外,还在另一个工具/命令,叫做java.exe
java.exe命令主要负责运行阶段。
- java.exe在哪里用?怎么用?
- 在Dos窗口中使用
- java.exe怎么用呢?
例如:
硬盘上有一个A.class,那么就这样用:java A
硬盘上有一个B.class,那么就这样用:java B
硬盘上有一个C.class,那么就这样用:java C
千万要注意:不要写成这样:java A.class【这种方式是错误的,大家记住就行】
-运行阶段的过程是:
*打开Dos命令窗口
*输入:java A
*java.exe命令会启动java虚拟机(JVM),JVM会启动类加载器ClassLoader
*classLoader会去硬盘上搜索A.class文件,找到该文件则将字节文件装载JVM当中。
*JVM将A.class字节码文件解释成二进制1010101010这样数据。
*然后操作系统执行二进制和底层硬件平台进行交互。
开始第一个java程序
*保证计算机当中已经安装了文本编辑器editplus
*安装jdk【jdk一般需要从oracle的官网下载】,我们这里讲解的是jdk8
*JDK、JRE、JVM的关系搞清楚
*jdk目录的介绍:
JDK/bin:该目录下存放了很多命令,例如javac.exe和java.exe
javac.exe负责编译
java.exe负责运行
*将HelloWorld.java源程序通过javac工具进行编译:
- 首先需要解决的问题是:javac命令是否可用
- 打开Dos命令窗口,直接输入javac,然后回车,出现以下:
‘javac’不是内部或外部命令,也不是可运行的程序
或批处理文件
出现以上问题的是因为:Windows操作系统无法找到javac命令文件
- 怎么解决以上javac不可用的问题?
Windows操作系统是如何搜索硬盘上的某个命令的呢?
*首先会从当前目录下搜索
*当前目录搜索不到的话,会从环境变量path指定路径中搜索某个命令
*如果都搜索不到,则报以上的错误。
- 配置环境变量path
* 注意:path环境变量和java语言没有关系,path环境变量是Windows操作系统的一个 知识点。path环境变量是专门给Windows操作系统指路的。
* javac想要能随意使用,需要将javac所在的目录配置到环境变量path当中:
JAVA_HOME=C:\Program Files\Java\jdk-1.8
* 运行java程序:
- 需要使用java.exe命令
- 首先测试命令是否可用
- 使用方式:
java 类名
硬盘上有HelloWorld.class,那么类名就是:HelloWorld
java HelloWorld
一定要注意:java命令后面跟的不是文件路径,是一个类的名字。
- 首先你需要先将Dos窗口中目录切换到HellWorld.class文件所在目录。
- 然后直接执行:java HelloWorld
java源程序当中的注释:
* 什么是注释?注释的作用是什么?
- 出现在java的源程序当中,对java源代码的解释说明
- 注释不会被编译到.class字节码文件当中
- 一个好的开发习惯应该是多编写注释,这样程序的可读性增强。
*java中的注释怎么写?
- 单行注释
//单行注释,只注释当前行
- 多行注释
/*
多行注释
多行注释
多行注释
*/
- javadoc注释
/**
* javadoc注释
* javadoc注释
* javadoc注释
*/
注意:这种注释是比较专业的注释,该注释信息会被javadoc.exe工具解释提取并生成帮
助文档。
HelloWorld程序的解释
* public表示公开的
* static表示静态的
* void表示空
* System.out.println("");向控制台输出消息
* 类体
* 方法体
* 类体中不能直接编写java语句【除声明变量之外】
* 一个java语句必须以“;”结束
* 方法体中可以编写多条java语句
* 主方法是程序的入口,固定写法,sun规定的
public class 和 class的区别:
* 一个java源文件当中可以定义多个class
* 一个java源文件当中public的class不是必须的
* 一个class会定义生成一个xxx.class字节码文件
* 一个java源文件当中定义公开的类的话, 只能有一个, 并且该类名称必须和java源文件名称 一 致。
* 每一个class当中都可以编写main方法, 都可以设定程序的入口, 想执行B.class中的main方 法: java B,想执行x.class当中的main方法: java x
* 注意: 当在命令窗口中执行java Hello, 那么要求Hello.class当中必须有主方法。没有主方 法会出现运行阶段的错误:
错误: 在类 B 中找不到主方法,请将主方法定义为:
public static void main(String [] args)
总结第一章需要掌握的内容:
-
理解java的加载与执行
-
能够自己搭建java的开发环境
-
能够独立编写HelloWorld程序,编译并运行
-
掌握环境变量path的原理以及如何配置
-
掌握环境变量classpath的原理以及如何配置
-
掌握环境变量classpath的原理以及如何配置
-
java中的注释
-
public class和class的区别
基本数据类型和数组
标识符
什么是表示符?
-在java源程序当中是程序员有权利自己命名的单词都是标识符
-标识符在EditPlus编辑器当中以黑色字体高亮显示
-标识符可以标识什么元素?
*类名
*变量名
*接口名
*常量名
......
标识符的命名规则?【不按照这个规则来,编译器会报错,这是语法】
*只能由数字、字母、下划线_、美元符号$"组成,不能含有其他符合
*不能数字开头
*严格区分大小写
*关键字不能做标识符
*理论上无长度限制,但是最好不要太长
标识符的命名规范?【只是一种规范,不属于语法,不遵守规范编译器不会报错】
*最好见名知意
public class UserService{
public void login(String username,String password){
}
}
*遵守驼峰命名方式
SystemService
UserService
*类名、接口名:首字母大写,后面每个单词首字母大写
*变量名、方法名:首字母小写,后面每个单词首字母大写
*常量名:全部大写
关键字
关键字在java语言当中全部小写
关键字在editplus工具中是蓝色高亮
常见的关键字有哪些?
public
class
static
void
if
for
while
do
default
byte
short
int
long
float
double
boolean
char
private
protected
switch
true
false
throw
throws
try
catch
......
*提醒:关键字不需要单独拿出来记忆,编写程序的过程记忆。
字面值:
- 10、100
- 3.14
- "abc"
- 'a'
- true、false
字面值就是数据。
字面值是java源程序的组成部分之一。包括标识符和关键字它们都是java源程序的组成部分
数据在现实世界当中是分门别类的,所以数据在计算机编程语言当中也是有类型的:【数据类型】
- 10、100属于整数型字面值
- 3.14属于浮点型字面值
- true,false属于布尔型字面值
- "abc"、"中国人"属于字符串型字面值
- 'A'、'人'属于字符型字面值
注意:java语言当中所有的字符串型字面值必须使用双引号括起来,双引号是半角
java语言当中所有的字符型字面值必须使用单引号括起来,单引号是半角
变量
什么是变量?
变量本质上来说是内存中的一块空间,这块空间"有数据类型"、"有名字"、"有字面值"。
变量包含三部分:数据类型、名称、字面值【数据】
变量是内存中存储数据的最基本的单元。
数据类型的作用?
不同的数据有不同的类型,不同的数据类型底层会分配不同大小的空间。
数据类型是指导程序在运行阶段应该分配多大内存空间。
变量要求:
变量中存储的具体的“数据”必须和变量的“数据”必须和变量的数据类型一致,当不一致的时候
编译报错。
声明/定义变量的语法格式:
数据类型 变量名;
数据类型:目前我们还没有学习数据类型,但是提前告诉大家有一种数据类型是整数
型,叫做int。
变量名:
只要是合法的标识符就行。规范中要求:首字母小写,后面每个单词首字母大写。
例如:
int i;
int age;
int length;
int size;
int num;
其中int是数据类型,i,age,length,size,num都是变量名。
变量声明之后怎么赋值?
语法格式:
变量名 = 字面值;
要求:字面值的数据类型必须和变量的数据类型一致。
= 等号是一个运算符,叫做赋值运算符,赋值运算符先运算等号右边的表达式,表达式执行结
束之后的结果赋值给左边的变量。
声明和赋值可以放到一起完成。
int i = 10;
变量赋值之后,可以重新赋值,变量的值可变化:
int i = 10;
System.out.print(i);
...
....
System.out.println(i);