复习: 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);