- Java简介
- 三个版本
- Java SE:Standard Edition // 标准版
- 包含:
- JVM
- 标准库
- 包含:
- Java EE:Enterprise Edition //企业版 ,在SE上添加API和库 (和SE一个虚拟机)
- Java ME:Micro Edition //嵌入式设备 (虚拟机也是简版)
- Java SE:Standard Edition // 标准版
- 相关名词
- JDK:Java Development Kit //编译源码
- 包含:
- 编译器
- 调试器
- etc.
- 包含:
- JRE:Java Runtime Environment //运行字节码
- 包含:
- JVM
- Runtime Library
- 包含:
- JSR规范:Java Speecification Request
- 发布时需要:
- 参考实现 RI:Reference Implementation
- 兼容性测试套件TCK:Technology Compatibility Kit
- 发布时需要:
- JCP组织:Java Community Process //审核JSR
- JDK:Java Development Kit //编译源码
- //第一个Java程序
public class Hello { public static void main(String[] args){ System.out.println("Hello,World!"); } }
class类:大小写敏感;//存为文件时应当保证文件名和类名保持完全一致 ,一个源码只能定义一个public类型的class
- public class static void 都为关键字:必须小写 ;
- 方法名main:参数args,类型String [] ;//Java程序的固定入口
- public 公开
- static 静态
- void 返回值类型
- {}花括号中间是方法的代码
- 如何运行:
- .java→javac编译成.class //javac编译器 :javac Hello.java
- .class→java执行//java虚拟机:java Hello
- IDE集成开发环境:Integrated Development Environment //将编写代码、组织项目、编译、运行、调试等放到一个环境中,提高效率
- 自动提示
- 代码修改后可以自动重新编译,直接运行
- 方便进行断点调试
- 三个版本
- Java程序基础
- Java程序基本结构
-
/* 注释 */ public class Hello{ //向屏幕输出文本: System.out.println("Hello,world!"); /*多行注释开始 *可注释区域 *注释结束/ }//class定义结束
Java为面向对象语言,程序基本单位为:class,class是关键字,类名:Hello
- class:类名要求
- 英文字母开头,后接字母、数字、下划线
- 习惯上以大写字母开头(驼峰命名法
- public:访问修饰符//表示类是公开的,不写也可以编译,但从命令行无法执行
- method:class内部,可以定义若干方法
public class Hello { public static void main(String[] args){ //方法代码..
}//方法定义结束 }方法定义一组执行语句,内部代码会依次顺序执行
- main方法名
- void返回值//没有任何返回值
- static静态方法//java程序入口方法必须为静态 名为main,括号内参数必为String数组
- class:类名要求
-
- 变量和数据类型
- 变量//必须先定义后使用
- 分类
- 基本类型变量
- 整数类型:byte,short,int,long
- 浮点数类型:float,double
- 字符类型:char
- 布尔类型:boolean
- 引用类型变量
- 基本类型变量
- 定义时可以
- 赋初始值
int x = 1;
- 可以不赋//默认为0
- 变量可以重新赋值,如
int x = 100; System.out.println(x); x = 200;//重新赋值 System.out.println(x);
- 但不可重复定义
- 变量也可以 赋值给其他变量
- 赋初始值
- 分类
- 变量//必须先定义后使用
- 整数运算
- 整数运算遵循初等数学四则运算规则
- 整数运算结果精确//两个整数相除只能得到整数部分
- 整数除法对于除数为0,运行时会报错,但编译不会
- 溢出
- 整数存在范围限制:计算记过超出范围会溢出//把int改成long
- 整数存在范围限制:计算记过超出范围会溢出//把int改成long
- 自增/自减
- n++ //n=n+1
- ++n 先加1再引用n
- n++ 先引用n再加1
- 移位运算
- << 左移 // *2
- >>右移 // /2
- 对负数右移 最高位1是不动的
- >>>不带符号的右移 //符号位跟着动
- 对byte和short进行移位运算,先换位int再位移 //前面补0
- 位运算
- 按位 与、或、非和异或
- 与:同1 为1
- 或:任意1 为1
- 非:0 1 互换
- 异或:两数不同为1 ,否则为0
- 两个整数位运算:按位对齐,依次对每一位进行运算 //应用:与运算判断ip是否在给定网段
- 按位 与、或、非和异或
- 运算优先级 ,由高到低是:
- ( )
- ! 、~ 、++、 –
- * 、/ 、%
- + 、-
- <<、>>、 >>>
- &
- |
- +=、-=、*=、/=
- 数值类型自动提升与强制转型
- 自动:两数类型不同,结果位较大类型整型
- 强制:使用(类型)强制转换,超出范围,高位会被直接扔掉
- 浮点数运算
- 可以 + – * / ,不可位运算和移位运算(浮点数不可精确表示)
- 类型提升:参与运算的两个数,其中一个是整型,整型可自动提升为浮点型
- 溢出
- 整数运算除数为0报错
- 浮点数运算除数为0,返回特殊值
- NaN //not a number
- Infinity
- -Infinity //-∞
- 强制转型:浮点数可强制转int,但超出范围后始终返回整型最大值
- 布尔运算//只有true和false两个值
- 关系运算
- 种类
- 比较运算符:>,>=,<,<=,==,!=
- 与运算&&
- 或运算||
- 非运算!
- 优先级
- !
- >,>=,<,<=
- ==,!=
- &&
- ||
- 种类
- 短路运算//布尔表达式能提前确定结果,后续计算不再执行,直接返回结果 eg:
/*示例 */ boolean b = 5 < 3; boolean result = b && (5 / 0 > 0); System.out.println(result);//输出:false,如果没有短路运算&&,/0会报错,
- 三元运算符:b ? x : y//根据第一个表达式的结果,分别返回后续两个表达式的计算结果
/* 根据b的真假,返回x或y式 */ int n = -100; int x = n > 0 ? n : -n; System.out.println(x); //输出: 100
- 关系运算
- 字符和字符串
- 字符类型:char(character) //保存一个Unicode字符
- 一个英文字符和一个中文字符都用一个char表示
- int n = ‘A’,//直接获取A的Unicode编码(十进制)
- char c = ‘u0041’//转义字符‘n’ +Unicode码表示 一个字符(十六进制)
- 字符串类型:String //引用类型,用”…”表示字符串
- 一个字符串可以存储0到任意个字符
- 字符串以”开始 ,以”结束,如果其中包含” 则借助转义字符表示 ,””中两个\表示 ,
- 常见转义字符
- ” :
- ‘ : ‘
- \ :
- n : 换行
- r : 回车
- t : tab
- u####:一个Unicode编码的字符
- 常见转义字符
- 字符串连接 :用+
- 用+ 连接字符串和其他数据类型,会将其他数据类型先自动转换为字符串,再连接
- 多行字符串
- 要表示多行字符串,用””” … “””表示(Java 13)
String s = """ SELECT * FROM users WHERE id > 100 """;
- 要表示多行字符串,用””” … “””表示(Java 13)
- 不可变特性
- Java字符串除了引用类型外,还有重要特点,字符串不可变(内容不可变,变的是指向jvm创建的不同字符串)
- 空值null //表示不存在,变量不指向任何对象
- null不等同于空
- 字符类型:char(character) //保存一个Unicode字符
- 数组类型:引用类型
- 定义:类型[] name= new 类型[size];eg:
int[] ns = new int[5] //默认赋值0,浮点0.0,布尔false /数组创建,大小不可变
- 字符串数组
- 字符串数组的每一项都是对某一字符的引用
- 定义:类型[] name= new 类型[size];eg:
- Java程序基本结构
发布内容参考:bookstack.cn 廖雪峰Java教程,感谢分享,欢迎交流。
感谢分享~欢迎交流