1.jdk: java的开发工具包 java开发环境 jre: java程序的运行环境(只需要运行程序时可以只安装jre) JVM:java程序的虚拟机
2.配置环境(配置环境变量)
JAVA_HOME:JDK根路径
Path:系统执行文件所在地址 classpath(现在不需要)
3. javac 编译指令 将.java文件编译成.class文件 .class文件又称为字节码文件
java 类名 运行指定类 JVM解析字节码文件编程系统(WINS)指令
java跨平台性:JVM将字节码内容解析成系统执行和系统交互,在不同的系统上安装不同版本的虚拟机,就可以执行字节码文件。
4.java语言具有跨平台性的特点,其原因是java代码经过一次编译后,被编译成为字节码文件(即.class文件),字节码文件在不同机器的虚拟机上都可以运行,即具备了一次编译到处运行的能力。
5.创建Java项目:给项目起完名称后,在源文件夹src下创建一个包,准备开始进行编程,包名全部为小写(如com.baidu),在包下创建新的类,注意类名要大写(如Test1)
6.关键字:开发语言中已经内定的一些单词,并且赋予了特殊的作用,开发人员只能按照指定的语法进行使用(java中的关键字所有字母都是小写)比如static final void int float double等
7.标识符:标识符包括了变量名,常量名,类名,方法名,参数名,包名等。
标识符的命名规范:标识符只能由字母,数字,$,_这四种组成,标识符不能由数字开头 (像9Test这种是不行的)
标识符要尽可能满足驼峰命名法(变量numMax,变量numMin)
包名:全部小写 类名:首字母大写 常量名:全部大写
标识符不可以是关键字(但是标识符里面可以包含着关键字如Vvoid)
所有的标识符都要见名知意,可以缩写,但是如果影响到见名知意,就不要缩写
标识符理论上可以是中文,但是平时不能用中文(中文不报错但是不能用)
8.变量:在程序运行阶段中,数值可以变化的量称之为变量
声明变量:int a; 声明变量时声明了变量的类型和名称
变量的初始化:a=1; 第一次给变量赋值称为变量的初始化,如果声明变量后从未进行初始化,则这个变量是无法使用的,即在输出中无法使用或程序中无法当作值计算
int b = 10;此时声明变量和对变量的初始化放到了一句中
9.常量:在程序运行阶段,不可以发生变化的量叫做常量
final int numB; numB=12;
10.数据类型:数据类型分为基本数据类型和引用类型
基本数据类型:整数型:byte,short,int,long
浮点型:float,double
字符型:char
布尔型:boolean
byte 1个字节 8个二进制位 -2^7~2^7-1 (-128~127) 默认值为0 byte num_byte=127;
short 2个字节 16个二进制位 -2^15~2^15-1 默认值为0 short num_short=1000;
int 4个字节 32个二进制位 -2^31~2^31-1 默认值为0 (int型为整数类型的默认类型) int num_int=1000;
long 8个字节 64个二进制位 -2^63~2^63-1 默认值为0 long num_long=2000L;
float 4个字节 32个二进制位 默认值0.0f(强制类型转换,因为浮点型默认为double型) float的范围比int要大 float num_float=12.3f; num_float=(float) 12.4; (两种强制类型转换的方式)
double 8个字节 64个二进制位 默认值0.0 double型为浮点型的默认类型 double的范围比long要大 double num_double=150.899;
char 2个字节 16个二进制位 0~65535 0~2^15-1 char a='c';(''里只能放一个字符) char b='C';(单引号''里可以分别为大小写字母) 在本质上char类型为一个数字
\反斜线为转义符 numChar='\r';//回车
numChar='\"';//双引号
boolean 1个或4个字节 只有两个值true(1) / false(0) 默认值为false(0)
boolean c=true; 此时占一个字节
boolean[] b_arr = {true,false};此时占4个字节
11.数据类型转换:分为隐式转换和强制类型转换
隐式转换:程序会自动完成的转换
byte numByte = 12; int numInt = numByte;将取值范围小的值可以自动转化成取值范围大的值
numInt=22; numByte=(byte) numInt; 将取值范围大的int类型向取值范围小的byte类型只能强制类型转换
float numFloat = 12;
numFloat=numInt;
long numLong=122222222;
numFloat=numLong; float类型可以包含int类型和long类型
整数类型和字符型之间的转换
numInt='a';
char numChar=65535;
numChar='\uFFFF';
强制类型转换:
1.大范围向小范围转换时使用强制类型转换
numInt=(int)numFloat;
2.整数型和字符型
输入一个整数将其强制转换为char类型并输出
public class Test2 {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入一个0~65535整数:");
int a=scan.nextInt();
char b= (char) a;
System.out.println(b);
scan.close();}}
3.boolean不能与其他类型进行转换(强制类型转换也不可以)
12.输入输出
输出:System.out.println("111");
输入(在控制台的输入):Scanner scan = new Scannner(System.in); //System.in 是输入流 对象
System.out.println("请输入一个整数:");
int a = scan.nextInt(); //此处为暂停,等待控制台输入一个值
System.out.println(a);
scan.close(); //需要对scan进行停止,否则会一直运行,很快系统宕机
13.注释: 单行注释//aaa 多行注释/*aaa*/ 文档注释/**aaa**/
14.运算符: 1赋值运算符=
2算数运算符 + - * / % ++ --
int a=12;
int b=23;
System.out.println(a+b); 35 注意: //整数和整数运算得到的结果是整数(int)
System.out.println(a-b); -11 //除非有long类型参与,得到的结果就是long类型
System.out.println(a*b); 276
System.out.println(a/b); 0
System.out.println(a%b); 12
对于取余运算来说: %的结果的正负,a%b得到结果的正负号和a一样!!!!!!!!!
System.out.println(12%23); 12
System.out.println(12%-23); 12
System.out.println(-12%23); -12
System.out.println(-12%-23); -12
a++和++a的区别:
int a = 12;
int c = 0; int a = 12;
c=a++; c=++a;
System.out.println(c,a); //c=12,a=13 System.out.println(c,a); //c=13,a=13
a++:先将a的值赋给表达式,再将a+1 ++a:先将a+1,再将a的值赋给表达式
特殊情况:
int a = 12;
a=a++;
System.out.println(a);12
int a = 12;
a=++a;
System.out.println(a);14
3比较运算符 > < >= <= == != 比较运算符得到的结果是布尔类型boolean
System.out.println(12>23);false
System.out.println(12<23);true
System.out.println(12>=23);false
System.out.println(12<=23);true
System.out.println(12==23); false
//==在基本数据类型中比较的是值是否一样
System.out.println((12.5==12.5f)+"----------");//此处比较的是仅仅是值
System.out.println(12!=23);
4逻辑运算符 逻辑与&& 逻辑或|| 逻辑非! 得到的结果也是布尔类型的
boolean result = 12>23&&23<34;
System.out.println(result); false
result = 12<23||23>34;
System.out.println(result); true
result = !true;
System.out.println(result); false
逻辑运算符的短路现象
1逻辑与中的短路
result = 12>23&&23<45; 此处判断出12>23为false,则不需要判断&&后面的23<45(即使这个表达式是true)
int a=0;
int b=0;
result = a++<0&&b++>0; 前部的a++<0为false,则后部b++>0不需要执行,被短路
System.out.println(a+"------------"+b); a=1 b=0 a=1是因为执行了a++,b=0是因为被短路,直接未执行b++
2逻辑或中的短路
a=0;
b=0;
result = a++>=0||b++>0; 前部的表达式a++>=0为true,整个总表达式已经确定为true,无需执行后面的表达式,后部的表达式被短路,不会执行b++
System.out.println(a+"-----------"+b); a=1 b=0 a=1是因为执行了a++,b=0是因为被短路