java三大块
- javaSE java Standard Edition 标准版 (基础)
- javaEE java Enterprise Edition 企业版
-
java版本
应该在生产环境使用LTS版本,例如java1.8与java11
JDK是一个软件,由JVMS、JLS规范约束,各vendor的JDK如下
强类型、静态
- 面向对象 一切皆是对象
- 可移植性(跨平台性) 一次编译,到处执行
- 简单性 继承c++的优点,去掉难理解的多继承、指针等概念
- 编译解释性 编译程序生成字节码,而非机器码,提升执行速率
-
java语言编译与执行
java Test执行过程
- 运行命令 java Test
- java.exe 启动 JVM
- JVM 启动类加载器ClassLoader
- 类加载器在硬盘上搜索Test class文件
- JVM把 Test class文件解释为二进制代码
- 操作系统执行二进制代码
- JDK、JRE、JVM 为向下包含关系
/ 多行注释 /
/**
- 定义 在java源程序中凡是程序员自己有权利命名的单词就是标识符
- 标识符可以标识的元素有 类名、方法名、接口名、变量名、常量名
- 命名规则有
- 必须是数字、字母、下划线、美元符,且不能用数字开头
- 不可以是java关键字
- 严格区分大小写
- 理论上无长度限制
命名规范
-
变量
基本概念、声明与初始化
程序中可能被反复访问或者需要修改的值,本质是内存中的一块空间
- 是内存中存储数据的最基本单元,数据类型决定开辟空间的大小
- 有数据类型、名称、字面值三部分构成
- 字面值的数据类型必须与变量的数据类型一致
- 变量申明后必须进行初始化,变量值可以重新赋值
java方法体内,语句逐行执行,访问前需要先申请
public class Var01
{
public static void main(String[] args){
int i;
i = 100;
System.out.println(i);
// 同时声明和初始化变量
int k = 19;
k = 20;
// 同时声明和赋值多个变量
int a,b,c=2;
}
}
作用域、分类
变量作用域指的是变量的有效范围
- 一般为括号范围
- 方法体内声明的变量为局部变量(栈内存),方法体外,类体内为成员变量(堆内存)
- 变量访问遵循就近原则
成员变量声明后,jvm会提供默认初始化
public class Var03
{
public static void main(String[] args[]){
int i;
i = 100;
System.out.println(i);
// 同时声明和初始化变量
int k = 19;
k = 20;
// 同时声明和赋值多个变量
int a,b,c=2;
}
}
数据类型
作用
决定在内存中开辟空间的大小
- 除了布尔类型,其他基本类型也对应一个包装类,有成员属性MAX_VALUE、MIN_VALUE等
- java整数默认类型为int,若需使用long类型,需要在数字后面添加l
- java浮点型默认类型为double,若需使用float类型,需要在后面加f,或者使用强制转换
高精度数据赋值低精度数据,需要强制类型转换,低精度数据赋值高精度数据,自动转换
分类
基本类型
- 整数型 byte short int long,分别占用 1 2 4 8 byte,包装类为 Byte Short Integer Long,默认值0
- 浮点型 float double,分别占用 4 8byte,默认值0.0
- 布尔型 boolean 占用1byte
- 字符型 char 占用2byte 可表示中文
引用类型
- / %
-
关系运算符
逻辑运算符
算子为布尔类型,执行结果也为布尔类型
- & 与 | 或 ! 非 ^ 异或
-
赋值运算符
-
控制流
条件控制
if if else
- switch
控制台接收数据
import java.util.Scanner;
public Class InputTest
{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份");
int year = sc.nextInt();
}
}