文章目录
1、Java基本了解
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
1.1 平台独立与可移植性原理
我们编写的JAVA程序并不是直接对操作系统进行使用,而是通过一个叫做JVM(Java Virtual Machine)JAVA虚拟机的中间虚拟机来使用操作系统的资源,即只要在不同平台安装对应的JVM,我们写的JAVA代码可以运行在任何系统上,这就是JAVA语言跨平台实现的原理。
1.2 JDK和JRE的组成和作用
JRE:是JAVA程序运行时的环境,包含JVM和所需要的核心类库。如果我们要运行一个写好了的JAVA程序,只需要安装JRE即可。
JDK(Java Development Kit):是Java程序开发工具包,包含JRE和开发人员使用的工具。如果我们要开发一个全新的JAVA程序,就必须安装JDK。
2、HelloWorld入门
无论再复杂的JAVA程序,整体开发流程就三个步骤:编写、编译、运行。
大部分的高级编程语言都采用模块化编程,即实现不同功能的代码放在不同的文件中,然后给其他代码调用。Java模块化的核心就是jar包,所谓jar包,就是一种软件包文件格式,通常用于聚合大量的Java类文件、相关的元数据和资源(文本、图片等)文件到一个文件,以便开发Java平台应用软件或库。
2.1 创建java源程序
首先在电脑任意地方新建一个.java
文件,比如我在E:\CloudMusic下新建一个FunA.java文件。
FunA.java文件内容为:
package cn.klb;
public class FunA{
public void out(){
System.out.print("HelloWorld...");
}
}
于是,一个java源代码就创建好了,下一步就是编译。
2.2 编译java源程序
打开命令行,进入到源代码所在路径,执行命令:
E:\CloudMusic>javac -d . FunA.java
然后就可以在该路径下生成一个文件夹:
其结构为:
|-cn
|-klb
|-FunA.class
生成了好.class
字节码文件,下一步就是打包成jar包。
2.3 生成jar包
继续在当前路径下,执行命令:
E:\CloudMusic>jar -cvf myjar.jar cn
dos界面会有以下输出:
这时看到jar包已经生成了。
生成好了jar包后,我们统一把jar包放在一个位置,比如我放在D:\JarPackages路径下
2.4 编写主程序
有了jar包,我们可以调用jar包来重用代码,首先在任意地方创建主程序(源程序),比如在C:\Users\Meumax\javatest路径下创建一个HelloWorld.java,内容如下:
import cn.klb.FunA;
class HelloWorld{
public static void main(String[] args){
FunA a = new FunA();
a.out();
}
}
此时,我们调用javac编译主程序就得注意了,我们import了一个类FunA,这个类在cn.klb包里,那么,我们编译的时候就要使用-classpath
告诉编译器cn包的位置,否则编译会显示找不到FunA。
进入主程序所在路径,cmd执行编译主程序命令:
C:\Users\Meumax\javatest>javac HelloWorld.java -classpath D:\JarPackages\myjar.jar
编译后,会在该路径下生成一个HelloWorld.class
字节码文件。
2.5 运行主程序
生成了HelloWorld.class
字节码文件,我们就可以用java命令去执行它,因为主程序里面import了一个类,所以java执行的时候也要带上-classpath
,告诉解释器这个导入的类在哪里。
cmd执行命令:
C:\Users\Meumax\javatest>java -classpath .;D:\JarPackages\myjar.jar HelloWorld
运行结果如下:
需要注意的地方就是,编译和解释两个阶段的命令参数-classpath
有区别,编译(执行javac命令)的时候,-classpath
放在要编译文件的后面,且不用包含当前路径。而解释阶段(执行java命令)则-classpath
放在要解释文件的前面,且要包含当前路径,当前路径用一个.
表示。
3、JAVA关键字的含义
关键字指的是在JAVA中具有特殊含义的单词,比如上面源代码中的public、class、static、void等,这些单词是JAVA用掉了的,我们在自定义变量、方法时不能再使用,无需死记硬背,在IDE中会有特殊颜色区分,只需要了解即可。
4、标识符的含义
标识符是区别于关键字的,比如我们自定义的类的名字、方法的名字和变量的名字等,都是标识符,对于规范编写JAVA,有以下硬性规定和软性要求:
硬性规定:标识符可以用英文26个字母(区分大小写)、0-9数字、$美元符号和_下划线组成。不能用数字开头,更不能是关键字。
软性建议:类名用首字母大写,后面每个单词首字母大写。方法名和变量名首字母小写,后面每个单词字幕大写。示范如下:
public class HelloWorld;
public int toString();
int myNumber;
5、JAVA常量
//整数常量包含所有的整数
0, 1, 2
//小数常量包含所有的小数
0.0, -1.2, 2.55
//字符常量由单引号引起来,只能写一个字符,必须有内容,不能是'',可以是' ',即中间有一个空格
'a','我', ' '
//字符串常量由双引号引起来,可以写多个字符,也可以不写
"", " ", "你好呀", "我", "123"
//布尔常量只有两个值
true, false
//空常量
null
6、JAVA基本数据类型
变量指的是可以变化的量,由以下基本类型组成:
数据类型 | 关键字 | 内存占用 | 取值范围 |
---|---|---|---|
字节型 | byte | 1个字节 | -27 ~ 27-1 |
短整型 | short | 2个字节 | -215 ~ 215-1 |
整形 | int(默认) | 4个字节 | -231 ~ 231-1 |
长整型 | long | 8个字节 | -263 ~ 263-1 |
单精度浮点数 | float | 4个字节 | 1.4013×10-45 ~ 3.4028×1038 |
双精度浮点数 | double(默认) | 8个字节 | 4.9×10-324 ~ 1.7977×10308 |
字符型 | char | 2个字节 | 0 ~ 216 |
布尔型 | boolean | 1个字节 | true, false |
这里解释一下取值范围的计算,以字节型为例,一个字节有8位,第1位是符号位,1代表负数,0代表正数。所以:
一个字节最小正数二进制是0000 0000=0
最大正数二进制是0111 1111 = 64+32+16+8+4+2+1=127
最大负数二进制是1111 1111 = -1
最小负数二进制是1000 0000→ 反码:1111 1111→ 补码: - {(1+2+4+8+16+32+64)+1} =-(127+1)=-128。
其他的以此类推。
7、定义变量
//定义一个变量的格式为:数据类型 变量名 = 数据值;
byte b = 100;
short s = 1000;
int i = 123;
long l = 1234567899990L;
float f = 5.5F;
double d = 8.5;
char c = 'A';
boolean b = true;
注意,在JAVA中,整数都默认为int,小数都默认为double,当我们执行byte b = 100时,其实这个100是int类型的,先执行了数据类型转换为byte,然后才赋值给b。
占用字节数少的类型可以自动转换为占用字节数多的(小瓶子装的水倒进大瓶子)不会产生任何错误,但是当字节数多的转为字节数少的,就容易出问题了,如果字节数多的类型变量存储的值没有超过字节数低的(5L容量瓶子装着1L的水,想要倒进2L容量的瓶子)就不会报错,但是超过了(5L容量的瓶子装着3L的水,想要倒进2L容量的瓶子)就会报错。
所以,在执行long l = 1234567899990L时这个L就是一个标记,说明这个数字是long类型,而不是int,就可以完成赋值操作,如果没有这个标记,而1234567899990由超出了int的范围,就直接报错了。float f = 5.5F也是同理,虽然这里F去掉也不会报错,因为5.5没有超出float的范围,但是以后我们定义float和long变量时最好加上,以防万一。
8、总结
Java跨平台的原理在于程序和操作系统中间有一个JVM,只要在不同平台安装对应的JVM,就可以实现代码的跨平台运行。
要深刻理解java代码从源代码到执行的一系列具体流程,包括jar包是什么、怎么使用jar包、编译和解释分别什么意思等。
关键字是系统占用,自定义的变量名、方法名以及类名等都不能是关键字。JAVA有8个基本数据类型,分别是byte、short、int、long、float、double、char以及boolean,除了基本数据类型,其他的都是引用数据类型,基本数据类型的值就是其本身,引用类型的值是其所对应对象的地址。
(本章内容为自学笔记,转载请注明来源,有错误地方欢迎评论区指出。)