-
Java SE:java标准版,用于桌面应用的开发,是其他两个版本的基础
-
java EE:Java企业版,用于Web方向的网站开发。
网页:英语数据展示
网站:网页+后台服务器
-
java ME:Java小型版,用于嵌入式消费类电子设备
-
跨平台
Java 程序可以在任意操作系统上运行。
-
原理
在需要运行 Java 应用程序的操作系统上,安装有与操作系统对应的 JVM(Java virtual Machine, Java虚拟机)
-
JVM 虚拟机本身不允许跨平台,允许跨平台的是 Java 程序
- JVM:Java虚拟机,Java程序运行在虚拟机中。
- JRE:Java运行环境,内部包含JVM虚拟机、Java核心类库。
- JDK:Java开发工具包,内部包含JRE、常用开发工具包(javac 编译工具、java 运行工具)。
jdk目录:
-
Java虚拟机:
JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器;
JVM虚拟机机制屏蔽了底层运行平台的差别,实现“一次编译,到处运行”;
-
垃圾回收机制:
自动进行,程序员无法精确控制和干预。
.java源文件——>javac编译器——>.class字节码文件——>java运行
//public 强制文件名和类名一致
public class HelloWorld{
//主方法,程序入口
public static void main(String[] args){
System.out.println("HelloWorld");
}
}
一个源文件中最多只能有一个public类。其它类的个数不限,如果源文件包含 一个public类,则文件名必须按该类名命名。
二、Java基础语法 1、关键字和保留字- 关键字:Java中被赋予特定涵义、用作专门用途的字符串(单词),所有单词均为小写;
| abstract | assert | boolean | break | byte |
|---|---|---|---|---|
| case | catch | char | class | |
| continue | default | do | double | else |
| enum | extends | final | finally | float |
| for | if | implements | import | |
| instanceof | int | interface | long | native |
| new | package | private | protected | public |
| return | strictfp | short | static | super |
| switch | synchronized | this | throw | throws |
| transient | try | void | volatile | while |
- 保留字:现在未使用,但以后可能会使用的字符串;goto,const;
-
整数常量:所有整数
-
小数常量:所有小数
-
字符常量:‘a’, ’ ’
-
字符串常量:“hello”
-
布尔常量:true,false
-
空:null
对程序的注解说明。
1)单行注释格式:
2)多行注释//注释内容
格式:
- 单行注释和多行注释,被注释的文字不会被 Java虚拟机解释执行。
- 多行注释里面不允许有多行注释嵌套。
格式:
注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形 式体现的该程序的说明文档。
操作方式:
4、变量javac -d mydoc -author -version HelloWorld.java
-
概念:内存中的存储区域,该区域内的数据可以在一定类型范围内不断变化;
变量是程序中最基本的存储单元;
-
作用:在内存中保存数据
-
声明和赋值:数据类型 变量名 = 初始值;
-
注意事项:
1)变量必须先声明,才能使用;
2)使用变量名来访问区域内的数据;
3)作用域:定义所在的大括号内;
4)变量只在作用域内有效;
5)同一个作用域内,不能定义重名的变量;
public class Variable {
static int allClicks = 0; // 类变量
String str = "hello world"; // 实例变量
public void method(){
int i = 0; // 局部变量 0
}
}
局部变量
在方法、构造器或者是语句块中定义,声明和初始化都在其中,方法结束后变量自动销毁。
成员变量
访问修饰符不能用于局部变量;
局部变量只在声明它的方法、构造方法、或者是语句块中可见;
局部变量是在栈上分配的;
局部变量没有默认值,所以局部变量被声明后,必须经过初始化;
package com.runoob.test; public class Test{ public void pupAge(){ //局部变量age的作用域就限定在pupAge方法中 //必须经过初始化 int age = 0; age = age + 7; System.out.println("小狗的年龄是: " + age); } public static void main(String[] args){ Test test = new Test(); test.pupAge(); } }
定义在类中、方法体之外,在创建对象的时候实例化。在堆上分配内存;
类变量(静态变量)实例变量
对象被实例化之后,实例变量的值就跟着确定;
实例变量在对象创建的时候创建,在对象被销毁的时候销毁;
实例变量的值应该至少被一个方法、构造方法或者语句块引用。使得外部可以通过这些方式获取实例变量信息;
实例变量的声明可以在使用前也可以在使用后;
实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息;
访问修饰符可以修饰实例变量;
实例变量具有默认值。数值类型的默认值是0,布尔类型的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;
实例变量可以通过变量名访问;
在静态方法以及其他类中,使用完全限定名访问;
import java.io.*; public class Employee{ //访问修饰符可以修饰实例变量 // public对子类可见 public String name; // private仅在该类可见 private double salary; //在构造器中对name赋值 public Employee (String empName){ name = empName; } //设定salary的值 public void setSalary(double empSal){ salary = empSal; } // 打印信息 public void printEmp(){ System.out.println("名字 : " + name ); System.out.println("薪水 : " + salary); } public static void main(String[] args){ Employee empOne = new Employee("RUNOOB"); //静态方法中使用完全限定名访问实例变量 empOne.setSalary(1000.0); empOne.printEmp(); } }
声明在类中、方法体之外,声明为static类型。
5、数据类型
- 一个类无论创建了多少对象,类只拥有类变量的一份拷贝;
- 静态变量除了被声明为常量外很少使用,静态变量是指
包括:基本数据类型,引用数据类型
1)基本数据类型 7种,字符串String类型属于引用数据类型。
整数类型-
byte:占1个字节的内存
-
short:占2字节的内
-
int:占4字节的内存
-
long:占8字节的内存
1、bit和byte
bit是计算机中最小的存储单位;byte是计算机基本存储单元。
2、默认值:
Java中的整型常量默认为int,声明long型常量须后加 ‘l’ 或 ’L‘。
long num = 123L; long d = 1033888854444444L; long d = 1033888854444444;//报错,整数太大
单精度float, 双精度double(默认)
-
float:占4字节的内存,7位有效数字
-
double:占8字节的内存,15~16位有效数字
1、浮点型常量的两种表示形式:
十进制数:5.12 5.120.f .512(必须有小数点)
科学计数法:5.12e2 512E2 100E-2
2、默认值:
Java 的浮点型常量默认为double型,声明float型常量,须后加 ‘f’ 或 ‘F’。
float num = 12.3f; float d = 1033.4566676;//报错,可能会丢失精度 float d = 1033.4566676f;//输出1033.4567,精度损失
char:取值范围 0~65535
-
char:占2字节的内存,使用单引号
1、ASCII码
A 65, a 97
2、Unicode
- Unicode:一种编码,将世界上所有的符号都纳入其中。每个符号都给予一个独一无二的编码,使用Unicode没有乱码的问题;
- Java中所有字符都使用Unicode来编码,故一个字符可以存储一个 字母、一个汉字、或其他书面语的一个字符。
3、UFT-8
- 使用最广的Unicode实现方式,可以使用1~6个字节来表示一个符号;
- 对于单字节的编码,最高位为0,其余7位用来对字符进行编码;
- 对于多字节的编码,如果包含n个字节,那么第一个字节的前n位为1,第一个字节的第n+1位为0,该字节的剩余各位用来对字符进行编码。其余字节的最高两位都为10,剩余6位对字符进行编码。
4、转义字符
转义字符 含义 b 退格,将当前位置移到前一列 n 换行 r 回车 t 制表 " 双引号 ’ 单引号 \ 反斜线


