一、JDK安装配置及运行原理
1.JDK全称Java开发工具包,JRE全称Java运行环境,只运行Java程序无需安装JDK,只安装JRE即可。
2.使用JDK需要配置环境变量:JAVA_HOME:JDK根路径。Path:Java.exe可执行文件所在路径。
3.程序运行过程:源码---javac---字节码---Java---系统指令。
4.javac ,编译。 将.java文件编译成.class文件,.class文件又叫做字节码文件。
5.Java 类名,运行指定的类,JVM将字节码文件解析为系统指令。
6.java跨平台性:JVM将字节码内容解析成系统指令和系统交互,在不同的系统上安装不同版本的虚拟机,就可以执行字节码文件。
二、规范
1.包名全部小写如com.easy,类名首字母要大写(行业规范)。
2.注释
/** 文档注释 */
//单行注释 只能注释单行内容
/*
多行注释
*/
3.类的结构为 class 类名 {},一个Java文件只能有一个public类(外部类,公共类),这个public类必须和文件同名。
4.关键字是编程语言内置的有特殊含义的单词。Java中所有关键字都是小写字母组成。
5.标识符(变量名,类名,方法名,常量名)
标识符只能有字母,数字,$,_组成,不能是关键字,首字符不能是数字(中文语法上是通过的,但不允许)。
标识符尽量使用驼峰命名法(单词首字母大写),所有标识符尽量见名知意,标识符可以缩写,如果影响见名知意,就不要缩写。
6.变量是在程序运行阶段可能发生变化的量,常量是在程序运行阶段不可发生变化的量用final修饰。声明:类型 变量名。初始化:给变量第一次赋值。未初始化的变量不可使用。同一作用域下变量不可重复声明。
三、数据类型(基本数据类型,引用类型)
String在Java中不是基本数据类型是引用类型。
1.八大基本数据类型
整数:byte、short、int、long
浮点:float、double
字符:char
布尔:boolean
2.基本数据类型取值范围(补码:正数补码与原码相同,负数补码为反码数值位加1)
计算机内部采用二进制补码形式存储数据,包括整数和小数。补码的使用解决了原码中存在的+0与-0问题,并且简化了加减法的运算,因为减法可以通过加上一个数的补码来实现。二进制负数计算它的十进制需要计算它的补码。
反码是原码除符号位以外按位取反获得。
数据类型 | 字节 | 二进制位 | 取值范围 | 默认值 | ||
整型 | ||||||
byte | 1 | 8 | -2^7~2^7-1 | -128~127 | 0 | |
short | 2 | 16 | -2^15~2^15-1 | 0 | ||
int | 4 | 32 | -2^31~2^31-1 | (默认) | 0 | |
long | 8 | 64 | -2^63~2^63-1 | 0 | ||
浮点型 | ||||||
float | 4 | 0.0f | ||||
double | 8 | (默认) | 0.0 | |||
字符型 | ||||||
char | 2 | 0-65535 | ||||
布尔型 | ||||||
Boolean | 1或4 | false |
boolean b=true; //1个字节
boolean[] b_arr={true,false}; //4个字节
四、类型转换,进制转换
1.类型转换(隐式转换,强制类型转换)
隐式转换系统自动完成,取值范围小的类型的值可自动转化为取值范围大的类型的值。
强制类型转换,可将范围大的类型的值转为范围小的类型的值,但是需要注意,如果截断的二进制位为有效位则会造成数据错误,如
int inumInt=128;
byte numByte=(byte) numInt;
System.out.println(numByte);
程序运行结果为-128。
00000000 00000000 00000000 10000000(int类型有32个比特位,此时符号位为0,正数2^7)
↑符号位
10000000(转换为byte类型,只能在8个比特位下保存此数据,截断,此时符号位为1,负数)
↑符号位
11111111(反码:除符号位外,其他按位取反)
↑符号位
1 10000000(负数的补码:符号位不变,反码的数值位加1,结果为-128)
↑符号位
2.布尔类型不能和其他类型转换
3.进制转换
二进制(binary): 0,1 ,满2进1.以0b或0B开头。
十进制(decimal): 0-9 ,满10进1。
八进制(octal): 0-7 ,满8进1. 以数字0开头表示。
十六进制(hex): 0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写
五、获取输入
1.
Scanner scan=new Scanner(System.in);
创建一个扫描器对象
System.in 输入流 对象
scan.close();流使用完记得关闭。
六、运算符
注意:&&优先级高于||
1.算术运算符 + - * / %
整数和整数运算得到的结果是整数(int)除非有long参与得到结果为long。
整数和浮点数运算得到结果为浮点数。
取余%的结果正负和被除数正负一样,与除数无关。/与除数有关。
2.自增自减运算符属于算术运算符 ++ --
b=a++;//先将a的值赋值给表达式,再将a+1
b=++a;//先将a+1,再将a的值赋值给表达式
3.比较运算符(关系运算符) > < >= <= == !=
==在基本数据类型中比较的是值是否一样。
浮点型是有精度的,不准确,System.out.println(12.5==12.5f); 结果为false。
4.逻辑运算符
&&逻辑与运算符 ||逻辑或运算符 !逻辑非运算符
A&&B A与B都为true结果才为true
A||B A或B有一个为true结果就为true
短路现象:多个表达式运算,前面的表达式已经可以明确整个表达式的结果, 后面的不需要再运行了
如
int a=0; int b=0; result= a++<0 && b++>0; System.out.println(a+"----"+b); a=0; b=0; result= a++>=0 || b++>0; System.out.println(a+"----"+b);
结果为
1----0
1----0
b的值没有改变,说明b没有参与运算,这就是短路现象。