一、Java运行环境
进制转换
-
十进制:1+1=2
-
二进制:1+1=10
-
16进制:0-9a-f(0-15)
-
十进制转换为二进制:
-
二进制转换为十进制: 1 ∗ 2 3 + 1 ∗ 2 2 + 0 ∗ 2 1 + 0 ∗ 2 0 = 12 1*2^{3} +1*2^{2}+0*2^{1}+0*2^{0} = 12 1∗23+1∗22+0∗21+0∗20=12
存储单元
-
字节,(byte)8个位为一字节,是最小的存储单元
-
位,(bit)一个1或0是一位
-
单位转换,1024是进制转换的最小单位, 1byte = 8bit,1KB=1024B,1MB = 1024KB,1GB = 1024MB,1TB = 1024GB
跨平台
java虚拟机JVM,java程序运行在JVM上,JVM运行在操作系统上
JVM不具备跨平台,只是在不同操作系统上有不同版本的JVM
- JRE:Java程序运行环境,包含JVM和运行需要的核心类库
- JDK:开发工具,包含JRE和编译器
二、写一个helloword!
public class HelloWord {
public void main() {
System.out.println("hello,word!");
}
}
注释
//第一种注释,只能注释单行
/*
第二种注释,可以单行也可以多行
*/
/**
*第三种,说明注释,也是文档注释
*
*/
说明注释:允许你在程序中嵌入关于程序的信息
更多文档注释:文档注释
/**
* @author shijinge
* @date 2021/3/18 7:18 下午
* @version 0.0.1
* @return String
**/
类
类是Java中所有源代码的基本组织单位,main是程序执行的起点
关键字和标识符
关键字
就像邮箱地址@后面代表域名,前面就不能出现@
有特殊含义的,被保留的,不能随意使用的字符。
关键字的特点:
- 完全小写
- 在idea中有特殊颜色
标识符
自己定义的内容,比如类名,方法名,变量名
命名规则:(必须遵守)
- 可以包含大小写字母,数字,下划线和$
- 不能以数字开头
- 不能是关键字
编码规范:(好的编码习惯)
- 类名:首字母大写,后面的每个单词的首字母大写
- 变量名:首字母小写,后面的每个单词的首字母大写
- 方法名:同变量名
常量
固定不变的量
- 字符串:用双引号引起来的
- 整数:直接写数字,没有小数点 -12
- 浮点数:直接写数字,有小数点,0.0、-1.2
- 字符:单引号引起来的的单个字符,‘s’、‘都’、‘9’、‘S’,两个单引号中间有且仅有一个字符
- 布尔:true,false
- 空:null代表没数据,不能直接打印输出
基本数据类型
- 整数型: byte、short、int、long
- 浮点型:float、double
- 字符型:char
- 布尔型:boolean
Java默认整数为int,浮点为double
取值范围
引用数据类型
字符串、数组、类、接口、lambda
变量
内容可以发生变化
int a;//创建了一个int类型变量
a = 1;//给变量赋值,不能超过int的取值范围
float b = 2.1f;//结尾加f
long c = 2000L;//结尾加L
char d = 'q';//字符类型
boolean v1 = true;//创建的时候,就放入指定值
boolean v2 = v1;//将v1的内容给v2存储
System.out.println(a);//打印变量内容1
System.out.println(b);//2.1
System.out.println(v2);//true
int x=1,y=2,z=3 ;//同时创建多个变量并赋值
- 变量名不可以重复
- float和long类型要有字母后缀F、L
- byte和short类型,赋值不能超过类型的取值范围
- 没有赋值的变量,不能直接使用
- 变量使用不能超过作用域(从变量定义的一行开始到直接所属括号结束)范围,
- 可以用一个语句创建多个变量
数据类型转换
数据类型不一样时,会发生数据类型转换
自动类型转换
- 自动完成
- 数据范围从小到大
强制类型转换
- 格式:范围小的类型 范围小的变量名=(范围小的类型)原本范围大的数据
- 强制类型转换,可能发生精度损失、数据溢出
- byte/char/short可以进行数学运算,首先提升成为int类型,在计算
- 布尔类型不能进行类型转换
//int-long,数据范围从小到大,自动转换为long类型
long h =100;//h为long类型,右边的值为int
double g = 2.43f;//自动转换
float f= 21L;//自动转换
//强制转换
int num = (int) 19L;//long-int 不能自动转换
//超过int的范围时,强制转换时数据溢出
int num2 =(int) 2200000000L;
System.out.println(num2);//-2094967296
//float-int 强制转换时,会舍弃所有小数位导致精度损失
int num3 =(int) 2.3F;
char var1 = 'A';
System.out.println(var1+1);//66,A为65
//计算机会用一个数字表示字符A,65(ASCII编码表)
byte b1 = 40;
byte b2 =50;
int b3 = b1+b2;//运算时为int类型,结果也是int类型
System.out.println(b3);
short num4 = 60;
short ans1 = (short) (b1+num4);
System.out.println(ans1);
数据溢出:数据所占内存超出预期的存储限制
精度损失:十进制的小数无法精确的转换为二进制
编码
ASCII编码表:常用的[0-9]:[48-57]、[a-z]:[97-122]、[A-Z]:[65-90]
Unicode码表:万国码,包含所有字符和数字的对应关系