Java基础(1)---- 层次逻辑,入门程序开发
1.层次
1.1Java编程之外的层次逻辑:
Java体系包含JavaSE(Java Platform,Standard Edition,标准版),JavaEE(Java Platform,Enterprise Edition,企业版),JavaME(Java Platform,Micro Edition,微型版)
- 以javaSE为例的组成概念图:
图1、Java概念图 ( 转自:http://docs.oracle.com/javase/8/docs/ )
- JVM(Java Virtual Machine ,称Java虚拟机):
作用:所有Java源程序首先被javac.exe程序编译为.class字节码文件,.class文件通过JVM与操作系统的交互,由JVM将程序解释给本地系统执行。因为不同操作系统对应有不同版本JVM,所以实现了Java语言的跨平台特性。
相关文件:JDK的安装目录----jre目录----文件夹bin,可被认作JVM。
- JRE(Java Runtime Environment,称Java运行环境):
作用:JVM在解释.class文件时需要调用类库lib(Libraries)。
相关文件:JDK安装目录----jre目录----文件夹lib,可被认作JVM解释.class文件需要的类库,连同bin组成JRE。所以在仅运行他人写的程序或者把程序发给他人时,需要包含.class文件和JRE文件。
- JDK(Java Development Kit,称Java开发工具包):
作用:JDK另包含开发工具,如将Java源程序编译为.class字节码文件的编译工具javac.exe。
相关文件:JDK安装目录下几个重要文件夹:
scr:类库源码压缩包
bin:主要包含编译器javac.exe
lib:类库
(注意:这里的lib,bin文件夹与jre里的bin,lib不同)
jre:java运行环境
- 三者关系:
JVM:将字节码文件转成具体系统平台的机器指令。
JRE:JVM+Java语言的核心类库
JDK:JRE+Java开发工具
1.2Java编程内的层次逻辑:
Java是一门面对对象的编程语言。”万物皆对象"的逻辑是:将万物即眼前的实体抽象出两个要素分别是静态属性, 动态行为分别作Java编程中对象的成员变量,方法函数;提取对象的共性抽象出Java编程中的类,再进一步提取共性抽象出Java编程中的接口,抽象类。实现的过程就是自上而下的填充,通过不同的填充内容,最终实现具体对象的准确性,多样性。
粗易例如:以不同品牌的手机作为对象抽象出组成元件,续航时间,开关机功能,闹钟功能等要素;提取这些对象的共性抽象出“手机”这个类,具有开关机功能,闹钟功能。同样的思路抽象出“无人机”这个类,具有开关机功能,飞行功能;提取”手机“和”无人机“这两个类的共性进一步抽象出“电子设备”这个接口,具有开关机功能。那么,在写一部手机的Java程序时,调用接口,为“手机”这个类写具体的开关机功能程序,为“手机”这个类新建对象,就可以用对象调用开关机的方法。同样写一架无人机的Java程序也可以从同一接口开始,可以发现这个的层层联系与分化的逻辑提升了Java面向对象编程的效率。
2.Java入门程序开发
2.1DOS:即早期非图形界面操作系统,Windows中命令提示符cmd模拟了DOS大多数功能
dos基本操作以访问文件夹为例:
- Windows+R,打开运行窗口,输入cmd回车,进入DOS的操作窗口
- “盘符名:”盘符切换命令
注:”:“为英文标点,盘符名称,文件夹名等路径信息名称不区分大小写。
- “dir”查看当前文件夹的所有子文件夹信息命令
- “cd 文件夹命”进给文件夹命令
注:文件夹名可以只写开头,用“Tab”键盘自动填充,如果开头无法填充到唯一的文件,重复按“Tab”键连续切换。
该命令不需要一层层进入,文件夹\子文件夹\子文件夹...可进入多级文件夹
- “cd..”退出文件夹命令
注:该命令只能一级级退回,最终只能退回到磁盘目录
- “cd\”退出到磁盘根目录
- “cls”清屏命令
2.2Java程序开发步骤:编码(记事本)---编译---运行
2.2.1 编码
- 在目录文件下新建记事本编程,文件名和主类名一致,后缀为.java。
2.2.2 编译:指将编写的Java源文件翻译成JVM认识的class文件,在此过程中javac编译器会检查所写的程序是否有错误,有则提示,无则编译成功。
- 在Java源文件上层目录运行cmd
图2、从指定文件上调取cmd
- "javac 文件名.java"命令编译
注:Java源文件编译工具为javac.exe,在JDK安装目录的bin目录下。配置环境变量后,可在任意目录下使用。
2.2.3运行:指将class文件交给JVM执行。
- "java 文件名"命令运行文件
注:Java程序.class字节码文件运行工具为java.exe,在JDK安装目录的bin目录下。配置环境变量后,可在任意目录下使用。
编译运行命令例如:
图3、cmd中编译运行命令
2.3入门程序编程
- 关键字:指已经官方规定了具体含义及用途的单词,全为小写。
Java关键字及含义查阅参考文档(https://max.book118.com/html/2017/0917/134182374.shtm)。
- main方法:称主方法,是程序的入口,无论编写多少代码,JVM运行都是从main方法开始运行,且格式固定不变。
main()方法格式详解:
public static void main(String[] args){.... }
public关键字:向其他类说明main()方法可以公共访问。
static关键字:向编译器说明main()方法是一个静态方法,即main函数中的代码是存储在静态存储区的,不需要示例化就可以使用。与不用static修饰的方法比较,区别是静态方法可以用类名调用,非静态方法需要用对象实例调用。具体的,如果main()方法没有使用static修饰符,虽然编译不会出错,如果试图执行该程序将会报错,提示main()方法不存在。因为包含main()的类并没有实例化(即没有这个类的对象),所以其main()方法也不会存。
void关键字:说明main()方法返回值是无类型。
(String[] args):说明main()方法的参数是字符串类型。具体的,args是“参数”的缩写,可以改成任意的名字;args存贮的是命令行参数,可用于程序中。String[] args这个字符串数组保存运行main函数时输入的参数 。
main()方法示例代码:
public class Test{
public static void main(String[] args){
System.out.println("args[0] is"+args[0]);
System.out.println("args[1] is"+args[1]);
System.out.println("args[2] is"+args[2]);
}
}
运行结果:
图4、cmd中向main()方法传入参数
- 注释规范:单行注释://aaaaaa ; 多行注释: /*aaaaaa*/,
Java注释规范查阅参考文档(https://blog.csdn.net/u011781521/article/details/78827425)。
- 标识符:指自定义的变量名,类名,方法名等各种名称。
命名规则: 硬性要求 | 命名规范: 软性建议 |
标识符可以包含 英文字母26个(区分大小写) 、 0-9数字 、 $(美元符号) 和 _(下划线) 。 | 类名规范:首字母大写,后面每个单词首字母大写(大驼峰式)。 |
标识符不能以数字开头。 | 方法名规范: 首字母小写,后面每个单词首字母大写(小驼峰式)。 |
标识符不能是关键字。 | 变量名规范:全部小写。 |
表1、Java标识符的命名规则
- 常量:指固定不变的数值
类型 | 含义 | 数据举例 |
整数常量 | 所有的整数 | 0,1,567 |
小数常量 | 所有的小数 | 0.0,-0.1,2.55 |
字符常量 | 单引号引起来,只能写一个字符,必须有内容 | ’a‘,' ', '好' |
字符串常量 | 双引号引起来,可以写多个字符,也可以不写 | ’‘A’‘,’‘Hellow‘', "你好",“” |
布尔常量 | 只有两个值 | true,false |
空常量 | 只有一个值 | null |
表2、Java常量类型总览
常量示例代码:
public class ConstantDemo {
public static void main(String[] args){
//输出整数常量
System.out.println(123);
//输出小数常量
System.out.println(0.125);
//输出字符常量
System.out.println('A');
//输出布尔常量
System.out.println(true);
//输出字符串常量
System.out.println("你好Java");
}
}
运行结果:
*注:汉字字符需要在 Dos命令行中设置字符为UTF-8,windows 中的命令是:cmd中先输入chcp 65001。
图5、常量入门编程示例
- 变量:指固定数据类型下数值可变动的数据。
类型分类 | 类型名称 | 程序中使用的名称 |
基本数据类型 | 布尔型(Boolean) | 布尔型:boolean |
字符型(Char) | 字符型:char | |
整数型(Integer) | 字节型:byte | |
短整型:short | ||
整型:int | ||
长整形:long | ||
实(浮点)型(Float) | 单精度型:float | |
双精度型:double | ||
复合数据类型 | 类(Class) | 类:class |
接口(Interface) | 接口:interface | |
数组(Array) |
表3、Java数据类型总览
变量示例代码:
public class Variable {
public static void main(String[] args){
//定义字节型变量
byte b = 100;
System.out.println(b);
//定义短整型变量
short s = 1000;
System.out.println(s);
//定义整型变量
int i = 123456;
System.out.println(i);
//定义长整型变量
long l = 12345678900L;
System.out.println(l);
//定义单精度浮点型变量 float f = 5.5F;
System.out.println(f);
//定义双精度浮点型变量
double d = 8.5;
System.out.println(d);
//定义布尔型变量
boolean bool = false;
System.out.println(bool);
//定义字符型变量
char c = 'A';
System.out.println(c);
}
}
注:为long型数据赋值时,末尾加上L。