Java基础:
一、环境变量
### 1、变量:系统属性;
变量名----变量值
path ----jdk安装目录里的bin;可以任意的路径访问命令;
%JAVA_HOME%\bin C:\Program Files\Java\jdk1.8.0_51\bin
JAVA_HOME---jdk的根目录, C:\Program Files\Java\jdk1.8.0_51
classpath: 类路径;----自从jdk1.5版本后可以不用配;
.;%JAVA_HOME%\lib;
JDK目录;JDK的bin目录:存放的是exe文件,可称为执行文件;
jdk版本号:java -version
2、java运行机制
JDK:开发工具和类库、包含了jre
JRE:运行环境,包含了jvm
JVM:虚拟机,不同操作系统模拟相同的环境;.java编译生成.class
一次编写,多次执行;
定义一个源文件.java文件; 经过虚拟机的编译,生成.class字节码文件;---机器码文件 运行执行class文件;可以执行多次; A.java源文件-->A.class字节码文件 对A.java内容做了修改,需要再次编译,重新生成字节码文件;
二、变量
1、概念:
计算机内存中得一块存储空间,是存储数据的基本单元.
2、变量的定义流程:
(1)、 声明:数据类型 变量名;
int num;// 声明一个整数类型的num
(2)、赋值: 变量名 = 值;
num = 100; // 将100赋给变量num
(3)、输出打印:
System.out.println(num);
注意:Java是强类型语言,变量的类型必须与数据的类型一致。
3、变量的定义方式
(1)、声明变量的3种方式:
先声明,再赋值【常用】: 数据类型 变量名;
变量名 = 值;
声明并赋值【推荐】: 数据类型 变量名 = 值;
多个同类型变量的声明与赋值:
数据类型 变量1 = 值1,变量2 = 值2,变量3 = 值3;
(2)、数据类型
java中的变量具有严格的数据类型区分。(强语言类型)
在java语言中,任何一个值,都有其对应类型的变量。
(3)、基本数据类型(整数) :
类型 | 字节 | 取值范围(二进制) | 取值范围(十进制) |
---|---|---|---|
byte | 1字节 | -2^7 ~ 2^7 - 1 | -128 ~ 127 |
short | 2字节 | -2^15 ~ 2^15 - 1 | -32768 ~ 32767 |
int | 4字节 | -2^31 ~ 2^31-1 | -2147483648 ~ 2147483647 |
long | 8字节 | -2^63 ~ 2^63 - 1 | -9223372036854775808 ~ 9223372036854775807 |
注意:int为整数的默认类型,如需为long类型赋值较大整数时,需要在值后面追加“L" .
(4)、基本数据类型(浮点数) :
类型 | 字节 | 负数取值范围 | 正数取值范围 |
---|---|---|---|
float | 4 | -3.4E ~ -1.4E-45 | 1.4E-45 ~ 3.4E+38 |
double | 8 | -1.7E+308 ~ -4.9E-324 | 4.9E-324 ~ 1.7E+308 |
浮点型数值采用科学计数法表示:
2E3等价于2*10^3 (结果:2000.0)
注意:double为浮点数的默认类型,如需为float类型赋值时,需要在值得后面追加”F“
(5)、基本数据类型(布尔) :
类型 | 字节 | 取值范围 | 描述 |
---|---|---|---|
boolean | 1 | trun / false | 仅可描述”真“或者”假“ |
可直接赋值true / false
也可赋值一个结果为true / false得表达式
注意:java中得boolean不能参与算术运算
(6)、基本数据类型(字符) :
类型 | 字节 | 取值范围 | 字符编码 |
---|---|---|---|
char | 2 | 0 ~ 65535 | Unicode字符集(万国码 / 统一码) |
Unicode中每个字符都对应一个二进制整数,可以使用多种方式赋值。
字符赋值:char c1 = 'A' ;(通过 ' ' 描述为字符赋值)
整数赋值:char c2 = 65 ; (通过十进制数65在字符集中对应的字符赋值) 65对应的字符是A,故输出A
public class Test{ public static void main(String[]args){ char c1 = 65; char c2 = 'A'; char c3 = '\u0041'; char c4 = '65'; // 错误,字符只能有一个 System.out.println(c1);// A System.out.println(c2);// A System.out.println(c3);// A } }
进制赋值:char c3 = '\u0041' ; (通过十六进制数41在字符集中所对应得字符赋值)
(7)、转义字符
转义字符 | 描述 |
---|---|
\n | 换行符 |
\t | 缩进(制表符) |
\ \ | 反斜线 |
\ ' | 单引号 |
\ '' | 双引号 |
(8)、引用数据类型
类型 | 取值范围 | 字符编码 |
---|---|---|
String | 任何" "之间的字面值 | Unicode字符序列 |
String类型的字面取值:
String str1 = ”Hello“;
String str2 = "你好";
(9)、类型转换
自动类型转换:
俩种类型相互兼容。
目标类型大于原类型。(小转大自动转)
public class Test{ public static void main(String[]args){ short s = 123; int i = s;// 自动转换成功 } }
强制类型转换:
俩种类型相互兼容。
目标类型小于源类型。(大转小,强制转)
public class Test{ public static void main(String[]args){ short s = 123; byte b = s;// 转换失败,byte小于short short s1 = 123; byte b1 = (byte)s1;//转换成功 } }
强制类型转换规则:*
整数长度足够,数据完整。
例: Int i = 100; byte b = (byte)i ; //b = 100
整数长度不够,数据截断。
例:int i =10000; byte b = (byte)i ; //b = 16(符号位变化,可能变为负数)
小数强转整数,数据截断。
例: doule d = 2.5; int i = (int)d; // i = 2 (小数位舍掉)
字符整数互转,数据完整。
例:char c = 65; int i = c ; // i = 65
boolean的取值为true / false,不可与其他类型转换。
(10)、自动类型提升:
进行算数运算时:
俩个操作数有一个为double,计算结果提升为double
如果操作数中没有double,有一个为float,计算结果提升为float
如果操作数中没有float,有一个为long,计算结果提升为long
如果操作数中没有long,有一个为int ,计算结果提升为 int
如果操作数中没有int,均为short或byte,计算结果仍旧提升为int
特殊:任何类型与String相加(+)时,实为拼接,其结果自动提升为String。
三、运算符
算术运算符:俩个操作数进行计算
操作符 | 描述 |
---|---|
+ | 加,求和 |
- | 减,求差 |
* | 乘,求积 |
/ | 除,求商 |
% | 模,求余 |
算术运算符:一元运算符(只有一个操作数)
操作符 | 描述 |
---|---|
+ + | 递增,变量值+1 |
- - | 递减,变量值-1 |
赋值运算符:等号右边赋值给等号左边
操作符 | 描述 |
---|---|
= | 直接赋值 |
+ = | 求和后赋值 |
- = | 求差后赋值 |
* = | 求积后赋值 |
/ = | 求商后赋值 |
% = | 求余后赋值 |
关系运算符:俩个操作数进行比较
操作符 | 描述 |
---|---|
> | 大于 |
< | 小于 |
> = | 大于等于 |
< = | 小于等于 |
= = | 等于 |
! = | 不等于 |
逻辑运算符:俩个boolean类型的操作数或表达式进行逻辑比较
操作符 | 语义 | 描述 |
---|---|---|
&& | 与(并且) | 俩个操作数,同时为真,结果为真 |
|| | 或(或者) | 俩个操作数,有一个为真,结果为真 |
! | 非(取反) | 意为:不是,真--》假 假--》真 |
三元运算符:将判断后的结果赋值给变量
操作符 | 语义 | 描述 |
---|---|---|
?: | 布尔表达式?结果1:结果2 | 当表达式为真时,结果为1;当表达式为假,结果为2. |