一、Java
Java诞生于1995年,原属于SUN公司,2009年4月20日,美国数据软件巨头甲骨文公司(Oracle)宣布以74亿美元收购SUN公司。Java是最受欢迎的开发语言,已经火了20年,并将继续引领着IT的编程语言。Java的LOGO是一杯热气腾腾的咖啡,真的是令人回味无穷
1.1 为什么Java是平台无关性(可以跨平台)
传统语言
Java语言
我们可以对Java程序进行编译操作,编译后生成一种和平台系统无关的文件——字节码文件(.class)。但是此时Windows、Linux均不能执行字节码文件,只有Java虚拟机(JVM)可以识别字节码文件,那么为了在Windows系统上运行该Java程序,我们就只能在Windows平台上安装Windows版本的JVM,如果要在Mac系统上运行,那么得安装Mac版本的JVM,总结来说就两点:
- Java编译后生成和平台无关的.class文件
- jvm是平台相关的
在这里进行编译操作的工具叫做javac,启动JVM并把字节码加载进JVM的工具叫做java
二、Java环境
2.1、JRE
JRE(Java Runtime Environment):Java运行环境,如果要运行Java程序,就需要JRE的支持,JRE里包含JVM,一般在只运行程序而不开发程序的服务器中安装
2.2、JDK
JDK(Java Development Kit):Java开发工具,包含开发Java程序的所有工具如javac和java等,JDK包含JRE,如果已经安装了JDK就不必安装JRE
2.3、JVM
JVM(Java Virtual Machine):Java虚拟机,它是运行所有Java程序的虚拟计算机。JVM是不跨平台的,在Windows下装Windows版的JVM,在Linux下装Linux版的JVM
三、Java编译和运行的机制
- 编写源文件(Java文件)
- 使用Java c工具对源文件进行编译操作(java c 源文件.java),生成.class文件
- 生成字节码文件(.class文件)之后,使用Java工具启动JVM,运行程序(java 主方法的类名)
四、Java基础
4.1、语法规则
- Java语言严格区分大小写,大写和小写是不同的概念
- 一个Java源文件里可以定义多个Java类,但其中最多只能有一个类被定义为public类,但如果源文件中包含了public类,源文件必须和public类同名
- 一个源文件中包含了N个Java类时,成功编译后会生成N份字节码文件,每一个类都会生成单独的.class文件,且字节码的文件名和其对应的类名相同
- 若一个类想要运行,则必须拥有主方法(main),因为main方法是程序的入口
4.2、注释
Java提供3种注释类型:
- 单行注释
//这是单行注释 //快捷键:Ctrl+/ 复制代码
- 多行注释
/* 我是多行注释 快捷键为:打/* 再按回车 */ 复制代码
- 文档注释
/* * * 我是文档类型 * 快捷键为:打/*然后按几下tab键 */ 复制代码
多行注释之间彼此都不能交叉嵌套,因为/
会找举例自己最近的/
符号,组成一个注释语句块,上图中单独的*/
符号就不能被编译器识别了
4.3、关键字和保留字
关键字
关键字:在编程语言中事先定义的,有着特殊含义和用途的单词
保留字
保留字:和关键字一样是编程语言事先定义好的,只是说现在暂时没有特殊的功能,但说不定以后某天会突然被赋予功能,因此被保留下来的单词。比如goto和const就是保留字
4.4、分隔符和标识符
4.4.1、分隔符
- 分号(;):语句的分割,表示一句话结束,好比咱们使用的句号。
- 花括号({}):表示一个代码块,是一个整体,花括号要成对使用。
- 方括号([]):定义数组和访问数组元素时使用。
- 圆括号(()):使用很广泛,具体用到细讲。
- 圆点(.):类和对象访问它的成员时使用。
- 空格( ):把一整条语句分割成几段,空格的次数不限制,好比一句英文里单词都要分开写一样。
4.4.2、标识符
在写代码的时候为了增强代码的阅读性,我们会自定义很多名字如:类名、方法名、变量名等。在编程的里,我们把这种为了增强程序阅读性而自定义的名称,称为标识符
标识符的命名规则:
- 由字母、数字、下划线、$组成,但不能以数字开头(注:此处的字母可以是中文、日文等)
- 大小写敏感
- 不能使用Java中的关键字和保留字
- 不能用Java中内置的类名
4.5、数据类型
注意:Java只有8大数据类型,String不属于基本数据类型,他属于引用数据类型
常用的整数类型是int和long,byte和short基本不用,常用的小数类型是double,float基本不用。因为double是不精确的,在实际开发中表示精确的小数我们使用BigDecimal类
- 整数类型默认是int类型,小数类型默认是double类型
- 表示long类型常量,要加L或者l,建议加L
- 表示float类型常量,要加F或者f,建议加F
五、变量
变量是内存中一块区域,可以往该区域存储数据,修改里面的数据,也可以获取里面的数据,一个变量如果没有被初始化,就意味着没有分配内存空间来存储,就不能使用
定义变量的语法格式如下:
- String,表示类型,这里可以写任何的类型
- name:变量名,和我们的姓名一样理解, 没有为什么
- =:赋值运算符,后面会讲,意思是将右边的值赋值给左边的变量
- “xiaolin”:一个字符串类型的值,如果是其他类型,不要加引号
变量的几个特点:
- 占据着内存中某一块存储区域
- 该区域有自己的变量名和数据类型
- 可以被重复使用
- 该区域的变量值可以在同一个类型的范围内不断地变化
5.1、变量的定义以及赋值
public class VarDemo{ public static void main(String[] args) { // 方式一,先定义变量,再赋值 // 数据类型 变量名;如:int age; // 变量名 = 常量值; // 定义一个int类型变量,初始值为17 int name; //修改age变量的值为17 age = xiaolin; System.out.println(age); // 方式二,在声明时同时赋值(推荐) // 数据类型 变量名 = 初始化值; // 定义一个String类型的变量,初始值为zs String name = "zs"; } } 复制代码
变量的使用注意如下几点:
- 变量必须是先声明再使用,并且初始化后才可以使用(定义包装类除外)
- 定义变量必须有数据类型
- 变量从开始定义到所在的作用域内可以使用,出了作用域之外就不可以使用了,且在同一作用域内,变量名不可以重复
常见的几种变量类型的定义:
public class VarDemo{ public static void main(String[] args) { //byte类型变量 byte b = 20; System.out.println(b); //short类型变量 short s = 20; System.out.println(s); //int类型变量 int i = 20; System.out.println(i); //long类型变量,使用L后缀 long l = 20L; System.out.println(l); //float类型变量,使用F后缀 float f = 3.14F; System.out.println(f); //double类型变量 double d = 3.14; System.out.println(d); //char类型变量 char c = 'A'; System.out.println(c); //boolean类型变量 boolean bb = true; System.out.println(bb); //String类型变量 String str = "你好"; System.out.println(str); } } 复制代码
5.2、交换两个变量值
思路
- 把num1的值存储到临时变量temp中去
- 把num2的值赋给num1变量
- 把temp存储的值赋给num2变量
实现代码
public class ChangVarDemo{ public static void main(String[] args) { int num1 = 10; int num2 = 20; System.out.println("num1=" + num1); System.out.println("num2=" + num2); //-------------------------------- //交互操作 int temp = num1; num1 = num2; num2 = temp; //-------------------------------- System.out.println("num1=" + num1); System.out.println("num2=" + num2); } }