开发环境:IDEA2020,JDK1.8
一、JDK及环境
JDK:JAVA 的开发者工具
JRE:JAVA运行环境
JVM:JAVA虚拟机
JDK包含JRE,JRE包含JVM,程序在JVM虚拟环境中运行
.java源代码程序,通过JDK自带的javac命令编译,生成.class字节码文件(为二进制文件),最后用JDK自带的java命令,在JVM虚拟机上运行。
.java程序中的一个类对应一个.class字节码,在运行过程中,使用哪个类,便调用哪个类。
一个简单的JAVA程序:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
// Hello World!
}
}
public为访问限定修饰符。class用来定义一个 类,HelloWorld为类的名称。String[ ] args指的是给函数传递的参数,常命名为args。
二、变量
1.整形变量int:4个字节,范围为-231 ~ 231-1,和C语言一样,int除以int类型的值仍然为int类型
2.长整型变量long:8个字节,范围为-263 ~ 263-1
3.单精度浮点类型float:4个字节,与C语言不同,在JAVA中默认一个小数为double类型,因此在初始化的时,需要进行标明,float x =1.2f,表示当前类型为float类型
4.双精度浮点类型double:8个字节,JAVA的double类型数据遵守IEEE 754标准(与C相同),在有限空间内表示小数时会存在误差
5.字符类型char:2个字节(C语言中char为1个字节)
6.字节类型byte:1个字节
7.短整型short:2个字节
8.布尔类型变量boolean:JVM没有规定布尔类型的大小,在JAVA当中,boolean只有两个取值true和false(与C语言不同,不是0表示假,1表示真)
9.字符串类型String:属于引用类型,其他数据类型和字符串用加号在后面拼接,结果就是一个字符串。
JAVA中没有无符号类型,都是有符号类型的。在进行变量定义的时候,需要进行初始化(针对局部变量),否则会进行报错。JAVA中没有long long超长整数类型。在JAVA中,数据类型都是有取值范围的,在存储数据时,不要超过范围。
三,常量
在程序的运行过程中,不能进行修改;
在程序编译的时候,就已经确定常量的值。(变量在运行时确定)
用final修饰,只能初始化一次
public class Test {
public static void main(String[] args) {
final int X = 100;
//X=1;报错
}
}
四、类型转换
JAVA是一个强类型语言,可以将范围小的赋值给范围大的,反之不行,需要进行强制类型转换。
1.boolean类型和int类型不能相互转换
2.两个boolean类型相加赋值给一个boolean类型时会报错,需要进行强制类型转换,因为在对于CPU来说,小于四个字节的运算,会提升为int类型,结果赋值时报错。
public class Test {
public static void main(String[] args) {
byte a=1;
byte b=2;
byte c=(byte) (a+b);
byte d=1+2;//相当于d=3常量不报错
}
}
3.类型提升,两个变量进行运算的时候,会将较小类型的提升为较大类型的
public class Test {
public static void main(String[] args) {
int a=10;
long b=10;
int c=(int)(a+b);//a+b提升为long类型
}
}
4.int和String类型的转换,用到函数valueOf,返回int的字符串形式
public class Test {
public static void main(String[] args) {
int a=10;
String b=String.valueOf(a);
System.out.println(b);//输出10
}
}
五、运算符
算数运算符
1.int/int 仍为 int
2.0不能作为除数
3.复合运算符,包括+=、-=、*=、/=、%=,在运算过程中会自动进行强制类型转换
public class Test {
public static void main(String[] args) {
short a=10;
//a=a+9;报错,a+9转化成int类型
a=(short)(a+9);
a+=9;//自动进行强制类型转换
}
}
4.自增自减运算符,++、-- 与C语言相同
关系运算符
==、!=、>、<、<=、>=
关系运算符的表达式返回结果都是boolean类型
逻辑运算符
&& [表达式1 && 表达式2],其中两个表达式全部为布尔表达式,如果1为假,则不执行2
|| [表达式1 || 表达式2],其中两个表达式全部为布尔表达式,如果1为真,则不执行2
!!false=true
位运算符
&:全为1为1
|:有1为1
^:相同为0,不同为1
~:0变1,1变0
<<:左移,右侧补0,左移一位,相当于原数*2
>>:右移,左侧补符号位,右移一位,相当于原数/2
>>>:无符号右移,不管符号位,左边统一补0
条件运算符
表达式1?表达式2:表达式3
三目运算符,表达式1是布尔类型
六、注释
单行注释://注释内容
多行注释:/注释内容/
文档注释:/*注释内容/