JavaSE--初识&&开发基础
JDK、JRE、JVM
-
JDK:Java Development Kit
- java开发环境
-
JRE:Java Runtime Environment
- java运行时环境
-
JVM:JAVA Virtual Machine
- java虚拟机
JDK开发环境搭建
JDK下载与安装&卸载
JDK8为主流
-
卸载
- 环境变量清理、文件夹删除。
-
下载
-
JDK8主流 下载需要同意许可协议 下载对应版本
-
安装时记录安装路径用来配置环境变量
-
配置环境变量
- 运行sysdm.cpl命令在高级系统设置页面的环境变量进行配置
- 在系统变量中新增:变量名=》JAVA_HOME 、路径=》安装时的jdk路径
- 在Path中新增jdk位置值:%JAVA_HOME%\bin
- 在Path中新增jre位置值:%JAVA_HOME%\jre(有的版本没有)
- 运行java -version测试是否安装成功
-
目录讲解
- bin:可执行程序
- include:包含c的头文件因为java是c衍生的
- jre:运行java的一些文件
- lib:存放库文件
- src.zip:存放的java的资源文件类文件
-
Helloworld初试
-
新建文件夹 如HelloWorld
-
新建java类的文件如Hello.java
- 后缀名要改 确保后缀名没有隐藏
-
写入代码
-
public class Hello{ public static void main(String[] args){ System.out.print("Hello,World!"); } }
- 需要注意的是文件名和和类名要相同也就是 public class Hello此处写的为Hello,文件名就应该是Hello.java,大小写也要相同。
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GEVpZEHd-1659759344259)(assets/image-20220610144252-gdao1pu.png)]
-
-
编译代码
-
cmd运行 javac Hello.java
- cmd工作环境要在该文件目录下
-
-
运行代码
-
cmd 运行 java Hello
- 注意此处只有Hello没有后缀名
-
Java运行机制
编译型:相当于把一本英语书直接翻译成汉语,然后读,读取的时候效率高,如果后续内容进行更改了要重新翻译,浪费时间。如C/C++
解释型:相当于一边读一边翻译,运行效率偏低,但是可以保证一直是最新的。Java接近于解释型
Java是两者都有个
先编译为字节码文件,然后放入类装载器中,进行字节码校验(如果这里没有检测出问题),进入解释器,按照解释型的方式,进行输出执行。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QOwqGpPf-1659759344260)(assets/image-20220610145934-6zxrtw6.png)]
JDEA安装
开发基础
注释符
//单行注释
/*
多行注释
*/
/**
* 文档注释
* @Author:ks192
*/
关键字&标识
常用关键字
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AdQxkvq1-1659759344260)(assets/image-20220610160057-vboqb93.png)]
标识
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uMuPurwD-1659759344261)(assets/image-20220610160859-gx6mbwq.png)]
注意
- 所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始
- 首字符之后可以是字母(A-Z或者-z),美元符($)、下划线(_)或数字的任何字符组合
- 不能使用关键字作为变量名或方法名。
- 标识符是大小写敏感的
- 合法标识符举例:age、$salary、_value、_1_value
- 非法标识符举例:123abc、-salary、#abc
- 甚至可以使用汉子作为变量名
数据类型
Java属于强类型语言。
强类型语言:要求变量的使用严格符合规定,所有变量必须先定义
后才能使用,定义后不能转换。弱类型语言:与强类型语言要求的部分相反
Java数据类型分为两种
-
基本类型(primitive type)
-
数值类型
-
整数类型:
- byte占1个字节范围:-128-127
- short占两个字节范围:-32768-32767
- int占4个字节范围:-2147483648-2147483647
- long占8个字节范围:-9223372036854775808-9223372036854775807
-
浮点类型
- float占4个字节
- double占8个字节
-
字符类型:char占2个字节
-
-
boolean类型:占1位其值只有true和false两个
-
-
引用类型(reference type)
- 类
- 接口
- 数组
进制转换
public class Demo03 {
public static void main(String[] args){
//整数拓展: 进制 二进制0b 十进制 八进制0 十六进制 0x
int i = 10;
int i1 = 0b10;
int i2 = 010;
int i3 = 0x10;
System.out.println(i);
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);
}
}
扩展
public class Demo03 {
public static void main(String[] args){
//============================
//浮点扩展?银行业务怎么表示?钱
//BigDecimal 数学工具类 不能用浮点
//==============================
//float 有限 离散 舍入误差 大约 接近 但不等于
//double
//最好完全使用浮点数进行比较
float f = 0.1f;
double d = 1.0/10;
double c = f;
System.out.println(f==d);//输出的是False 也就是float类型转换为double的过程中会发生变化
System.out.println(f);
System.out.println(d);
System.out.println(c);
float d1 = 2131231212321332f;
float d2 = d1+1;
System.out.println(d1==d2);//超出float、double也一样定义的范围采取四舍五入记录
System.out.println(d1);
System.out.println(d2);
//==============================
//字符拓展?
//==============================
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1);//强制转换
System.out.println(c2);
System.out.println((int)c2);//强制转换
//所有字符本质还是数字
//编码 Unicode编码表:97-a 2字节 65536 Excel文件早期最多65536行
char c3 = '\u0061';
System.out.println(c3);//a
//制表符 \t制表符 \n换行
System.out.println("hello\tworld");
}
}
类型转换
不能转换布尔类型,只能从高到低转换(如果从低到高强制转换可能会出现内存溢出或者精度的情况)。不能把类型转换为不相干的类型。
public class Demo05 {
public static void main(String[] args){
int i = 200;
byte b =(byte) i;
System.out.println(i);//200
System.out.println(b);//-56
float num1 = 323.123f;
int num2 = (int)num1;
System.out.println(num1);//323.123
System.out.println(num2);//323
}
}
JDK7以后定义int类型的数据可以用下划线(_)进行分割。
变量
变量作用域
- 类变量
- 实例变量
- 局部变量
示例如下:
public class Demo05 {
//类变量 static
static double salary = 25000;
//实例变量
//属性变量:从属于该对象;如果不进行初始化,这个变量的值为默认值
//除了基本类型,其余的默认都是null;布尔类型是false
String name;
int age;
//main方法
public static void main(String[] args) {
//局部变量只存在于这个方法中
int i = 10;//局部变量 如果不初始化 则不会被输出
System.out.println(i);
//变量类型 变量名字 = new Demo5()
Demo05 demo05 = new Demo05();
System.out.println(demo05.name);
System.out.println(demo05.age);
}
//add方法
public void add(){
System.out.println(salary);
}
}
命名规范
◆所有变量、方法、类名:见名知意
◆类成员变量:首字母小写和驼峰原则:monthSalary除了第一个单词以外,后面的单词首字母大写lastname 如:lastName
◆局部变量:首字母小少小写和驼峰原则
◆常量:大写字母和下划线:MAX VALUE
◆类名:首字母大写和驼峰原则:Man,GoodMan
◆方法名:首字母小写和驼峰原则:run0,runRun(O
常量
用final定义
运算符
- 算术运算符:+,-,* ,/,%,+,
- 赋值运算符=
- 关系运算符:>,<,>=,<=,=,!= ,instanceof
- 逻辑运算符:&&,‖,! 与、或、非。
- 位运算符:&,|,^,~,>>,<<,>>>(了解!!!)
- 条件运算符 ?:
- 扩展赋值运算符:+=,-=,*=,/=。
二元运算符&&关系运算符&&模运算符
示例
public class Demo01 {
public static void main(String[] args){
int a = 10;
int b = 20;
//二元运算符
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double)b);
//关系运算符
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a=b);
System.out.println(a!=b);
//模运算
System.out.println(b%a);表示b除以a取余数
}
}
如果运算过程中类型不同,那么会按照包含范围最大的类型进行转换。
一元运算符
++,–,
public class Demo02 {
public static void main(String[] args){
int a = 1;
int b = a++; //a++=>a = a+1 先赋值后自增
int c = ++a; //++a=>a = a+1 先自增后赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
逻辑运算符
-
&&
- 同真才为true,否则就是false
-
||
- 有一个true,结果就是true,全为false才为false
-
!
- 就是取反
public class Demo03 {
public static void main(String[] args){
boolean a = true;
boolean b = false;
System.out.println(a&&b); //false
System.out.println(a||b); //true
System.out.println(!(a&&b)); //true
}
}
位运算符
<<:左移,每左移一位就相当于乘以2,和*乘号的区别在于运行效率较高
>>:右移,与左移相反
字符串连接符
+在使用字符串连接符时,如果在加号左边或者右边有一个字符串类型,则结果就是字符串类型,但是,要遵循运算顺序
如下所示(“+”在不同的位置结果是不同的):
public class Demo03 {
public static void main(String[] args){
int num1 = 2;
int num2 = 3;
System.out.println(""+num1+num2); //23
System.out.println(num1+num2+""); //5
}
}
三元运算符
x ? y : z 如果x为真结果为y,如果x为假,结果为z。