JavaSE入门
Java特性和优势
- 简单性
- 面向对象
- 可以执行
- 高性能
- 分布式
- 动态性
- 多线程
- 安全性
- 健壮性
- Write once,run anywhere.
Java三大版本
- JavaSE : 标准版
- JavME : 微型版—快死了
- JavaEE : 企业版—最广泛
JDK & JRE & JVM
JDK
Java开发工具包
JDK>JRE>JVM
JRE
Java运行时环境
JRE>JVM
JVM
Java虚拟机
跨平台核心
编译和运行
编译 : javac Test.java
运行 : java Test
Java程序运行机制
Java属于编译解释型
编译程序 : 生成可执行文件 , 多用 ----C , C++
解释程序 : 从上至下逐句翻译 , 没有源文件生成 , 少用
Java先编译成 class 文件 , 然后执行class文件
Java基础语法
注释
写注释是一个很好的习惯 , 注释会被编译器忽略 , 并不会被执行
三种注释
-
单行注释
// …
-
多行注释
/* … */
-
文档注释
/** … */
标识符
- 关键字 : public , class , static , void…
String不是关键字,是类
**注意事项 : **
- 标识符以字母,美元符号,下划线开头
- 首字母后可以是任何数字,美元符号,下划线,字母的组合
- 标识符不能是关键字
- 标识符大小写是敏感的
- 可以以中文命名,但是不建议
Java数据类型
Java是强类型语言,所有变量都必须定义后才能使用
Java的数据类型分为两大类:
- 基本数据类型
数值 | 非数值 |
---|---|
整型–byte:1B | boolean类型 |
short:2B | 只有true和false两个值 |
int:4B–最常用 | 占一位 |
long:8B–L | |
浮点数–float:4B–F | |
double:8B | |
字符–char:2B⭐–单个字符 |
long n1=123_456_789L;
float n2=1.23F;
-
引用数据类型
- 数组
- 类
- 接口
数据类型扩展
整数扩展
1. 二进制--0B
2. 八进制--0
3. 十进制
4. 十六进制--0X
int i=10;
int i2=010; //八进制
int i3=0X10;
int i4=0B1010101;
浮点数扩展
浮点数都是近似的,最好并避免浮点数比较
float f=0.1f;
double d=1/10.0;
System.out.println(f==d); //false
字符拓展
char c='a';
char c2='汤';
char c3='姆';
System.out.println((int)c); //97
System.out.println((int)c2); //27748
System.out.println((int)c3); //22982
空格 : 32 , 0 : 48 , A : 65 , a : 97
所有的字符本质还是数字
Java使用Unicode
范围 : \u0000—\uFFFF
字符串扩展
String s1=new String("Hello");
String s2=new String("Hello");
String s3="Hello";
String s4="Hello";
System.out.println(s1==s2); //false
System.out.println(s3==s4); //true
布尔扩展
if(flag){}
if(flag==true){}
两者是等价的语法,但推荐使用第一种
类型转换
Java是强类型语言 , 所以有时候要进行类型转换
byte,short,char—>int—>long—>float—>double
- 不能对布尔值进行转换
- 转换的时候可能会存在精度问题或内存溢出
自动类型转换
低—>高
double d=0.5f;
float f=1000000000L;
int i='a';
强制类型转换
//(类型)变量名
System.out.println((int)45.999); //45
int a=128;
System.out.println((byte)a); //内存溢出
变量,常量,作用域
变量
数据类型 变量名=值
保证程序可读性
常量
程序中不允许改变的值,一般都为大写
//修饰符不存在先后顺序 static final double PI=3.14;
变量作用域
- 类变量
- 实例变量
- 局部变量
//类变量 : static,不能放方法中 static double wage=500; //实例变量 : 从属于对象 String name; //不初始化,会带一个默认值 int age; // 0 0.0 \u0000 false null public static void main(String[] args) { //局部变量 : 必须声明和初始化 int i=10; System.out.println(i); System.out.println(wage); }
命名规范
所有取的名字 : 见名知意
- 类成员变量 : 除了第一个单词外,后面的单词首字母大写 monthSalary , 驼峰原则
- 局部变量 : 首字母小写 , 驼峰原则
- 常量 : 大写字母和下划线 : MAX_VALUE
- 类名 : 首字母大写和驼峰规则 GoodMan , Student
- 方法名 : 首字母小写和驼峰规则 run() , runMan()
运算符
算术运算符⭐
+,-,*,/,%(模),++,–
IDEA : 快捷键 ctrl+d复制当前的行
//1 int a=10; int b=20; System.out.println((double)a/b); //整数相除 //2 short c=10; byte d=8; long l=10101L; double x=1.0D; System.out.println(c+d); //int System.out.println(a+b+c+l); //long System.out.println(x+l); //double //3 System.out.println(a%b); //===>10/20=0....10 System.out.println(-1%10); //-1 , 只有除数为负数时结果才为负数 System.out.println(1%-10); //1
++和-- ,单独使用都一样
赋值运算符⭐
=
关系运算符⭐
<,>,==,<=,>=,!=,instanceof
返回结果 : true或false
逻辑运算符⭐
短路–&&,||,!
位运算符
&,|,^,~,>>,<<,>>>
/* * A=0011 1100 * B=0000 1101 * */ //A&B 有0出0 //A|B 有1出1 //A^B 异或:相同为0,不同为1 //~B 取反 /* 效率极高 << 左移 *2 >> 右移 /2 */ System.out.println(2<<3);//2* 2*2*2 System.out.println(2<<1);//2* 2 System.out.println(2<<2);//2* 2*2 System.out.println(2>>1);//2/ 2 System.out.println(16>>2);//16/2/2
条件运算符
? :
偷懒用
扩展赋值运算符
+=,-=,*=,/=,%=
扩展
int a=10; int b=20; System.out.println(a+b+"");//30 System.out.println(""+a+b);//1020
优先级
数学
多用括号() , 养成习惯
包机制
包的本质就是文件夹
package必须在最上面
规范 : 包名一般用公司域名倒置
com.baidu.www
JavaDoc
javadoc是用来生成自己API文档的
参数 :
- @author作者名
- @version版本号
- @since指明需要最早使用的jdk版本
- @param参数名
- @return返回值情况
- @throws异常抛出情况