复习:
jdk
--开发工具:编译器,解析器,javadoc.exe
--jre(java运行环境)
--jvm
--类库
配置环境变量:
JAVA_HOME:新建的
CLASSPATH:新建的
PATH:追加信息
测试:
java -version 回车
javac 回车
java的运行原理:
1.编译过程:
源文件(.java)--->字节码文件(.class)
执行:
javac 源文件名称(带扩展名)
注意:源文件只要更改,就需要重新编译
编译过程中,会检查语法格式,
如果格式错误,那么就不会编译成功
2.运行过程:
使jvm运行字节码文件。
执行:
java 字节码文件名称(不带扩展名)
变量:
jvm在内存中开辟的存储空间,用来存储数据
命名规则
使用规则
类型:
引用类型和基本数据类型
基本数据类型中:8种
byte,short,int,long,float,double,char,boolean
整数类型:4种
byte,short,int,long
============================================
System.currentTimeMillis();会返回一个long类型的
数据。此数据为 从1970年1月1日0时0分0秒到系统当前时间之间的
所有毫秒数。
浮点数类型:2种--小数类型
float:
在内存中占4字节大小,32位二进制
范围:
-3.403E38~3.403E38
double:
在内存中占8字节大小,64位二进制
范围:
-1.79E308~1.79E308
字面量:默认类型为double,即64位的浮点数类型
如果想直接写32位的浮点数,需要在数值后
添加f/F
比如:
double num = 3.14;
float num1 = 3.14F;
范围大小从大到小排序:
double>float>long>int>short>byte
精度大小从大到小排序:(int,long,float,double)
long>int>double>float
=======================================
字符类型:char
在内存中占2字节大小,16位二进制。
赋值特点:
(1)值中,有且只有一个字符
(2)字符必须使用单引号引起来。
另外特点:底层二进制是无符号的整数类型
即 0~2^16-1--->0~65535
所以,赋值时,也可以赋值整数。但是,存入变量
空间后,其实是其整数对应的字符。
java语言默认使用的字符集为unicode。
unicode字符集:
无论字母,还是汉字,都占两个字节大小
'A'---00000000 01000001
'a'---00000000 01100001
'0'---00000000 00110000
什么是字符集:
即二进制与字符的一一对应关系的表
GBK
GBK2312
UTF-8
'中'----00010110 01010101
'中'----00010110 01010101 00010001
写文件时:采用unicode输入'中'
00010110 01010101
打开文件时:采用GBK
00010110 01010101----好
编码:将字符--->二进制
写
解码:将二进制--->字符
读
java语言常用的字符:
'A'~'Z' ->65~90
'a'~'z' ->97~122
'0'~'9' ->48~57
java语言中的转义字符:
'\':将特殊字符变成相应意义的字符。
java语言中的特殊字符:
单引号,双引号,制表符,换行符,回车符号
'\'' 单引号
'\"' 双引号
'\\' 反斜线
'\t' 制表符
'\r' 换行符,(有翻页效果,看不到上一页的数据)
'\n' 回车符,
需求:查看字符集中,某一字符对应的整数
将字符赋值给int类型的变量即可
int num = '王';
int num1 = '从';
int num2 = '明';
char c20 = 65;
布尔类型:用来判断条件是否成立的。
在内存中占1字节大小。
只有两个值 true/false
true:表示条件成立
false:表示条件不成立
=======================================
类型转换:
1.自动转换(隐式转换)
占内存小的类型变量赋值给占内存大的类型变量,
会发生自动转换。
byte b = 5;
short b1 = b;//8位的5赋值给16位5,在前面自动添8个0
int c1 = -1;
long c2 = c1;//32位的-1赋值给了64位的c2里,自动填了32个11
long c3 = -1;
byte-->short-->int-->long-->float-->double
char
2、强制转换:
占内存大的类型变量赋值给占内存小的类型变量,需要
强制转换。语法如下:
(占内存小的变量类型名)变量;
注意:有可能出现精度损失。
int a = 1;
byte a1 = (byte)a;
long b = -10;
int b1 = (int)b;
double->float-->long-->int-->short--byte
char
===============================
引用类型之一
String:字符串类型
================================
运算符:
两原一封:
两个原则:
1、不同类型的数据做运算时,一定会先转换成较大范围类型后
再运算。
2、byte,short,char这些类型运算时,一定会先转成
int类型再运算,结果int类型
封:
一定要注意封闭式运算。(int 和 long 需要注意封闭式运算)
算术运算符:
+,-,*,/,%,++,--
/:
情况1:
参与的类型都是整型时,做取整运算,
即 商n余m, 结果为n
2/3----商0余2。结果为0
情况2:
只要有一个浮点数参与,就会做
类似精确运算。
%:取余运算符号,也叫取模运算符号
做除法运算时,商n余m,结果为m.
情况1:参与运算都是整数时,余数是精确值
情况2: 有浮点数参与时,余数不一定是精确值。
注意:
取余运算一般被用来判断 某一个数能
否被另外一个数整除。
++/--:是自增自减运算符
符号要与变量一起使用。
表示变量自动+1,或自动-1;
如:++a/a++/--a/a--;
++a/a++:是a=a+1的简写
--a/a--:是a=a-1的简写
情况1: 即与变量在一起,不与其他任何符号连用时
(单独使用)
++a
a++
--a
a--
此时,变量一定会+1或-1;
情况2:自增/自减运算与其他符号连用时
需要考虑表达式的值。
++a/a++/--a/a--整体看成表达式
口诀:
符号在前,先运算再赋值
符号在后,先赋值在运算
解析:符号在前时,变量先自增/自减,新值赋值给表达式
符号在后时,先把变量的值赋值给表达式,然后变量再自增/自减
如:
int a = 1;
a = ++a;
System.out.println(a);