Java
DOS命令(了解)(磁盘操作命令)
- dir:查看当前目录有什么
- cd:切换磁盘,切换文件目录
- cd…:切换到上一级
- cd\:切换到根目录
相对路径—绝对路径
相对路径:从当前目录开始定位,形成的一个路径
绝对路径:从根目录开始定位,形成的一个路径
JDK,JRE,JVM的关系
- JDK = JRE + JAVA开发工具
- JRE = JVM + 核心类库
环境变量path的配置以及作用
- 环境变量的作用是为了在DOS的任意目录,可以去使用java和javac命令
- 先配置JAVA_HOME = 指向JDK安装的主目录
- 编辑path环境变量,增加 %JAVA_HOME%\bin
java编写步骤
- 编写java的源代码
- javac 编译,得到对应的 .class 字节码文件
- java 运行,本质就是把 .class 加载到jvm 中运行
Java编写的七个规范
- 类,方法的注释,使用javadoc的方式,即文档注释
- 非javadoc注释,往往是对代码的说明(给程序的维护者),说明如何修改,注意事项
- 使用tab,整体将代码右移,使用shift+tab整体左移
- 运算符和 = 的两边,给空格,代码看上去清楚
- 源码文件使用utf-8编码
- 行宽字符不超过 80
- 代码编程风格有两种 次行风格和行尾风格
//一个程序就是一个世界
java API文档
API:java提供的基本编辑接口(java提供的类还有相关方法)
变量
- 变量是程序的基本组成单位
变量的三个基本要素: 类型+名称+值
概念:变量相当于内存中一个数据空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,而通过变量名可以访问到变量值
变量的基本使用:
- 声明变量: int a;
- 赋值:a = 50;
- 使用System.out.println(a);打印
变量的使注意事项:
- 变量表示内存中的一个存储区域(不同的变量,类型不同,占用的空间大小不同,比如:int 4个字节,double就是8个字节)
- 该区域有自己的名称[变量名]和[数据类型]
- 变量必须先声明,后使用,即有顺序
- 该区域的数据(值)可以在同一类型范围内不断变化
- 变量在同一个作用域内不能重名
- 变量=变量名+值+数据类型(变量三要素)
程序中“+”的使用:
- 当左右两边都是数值型时,则做加法运算
- 当左右两边有一方为字符串,则做拼接运算
数据类型
每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间(字节)
Java数据类型:
- 基本数据类型:
数值型:
整数类型,存放整数:byte[1],short[2],int[4],long[8]
浮点型(小数):float[4],double[8]
字符型: char[2],存放单个字符'a'
布尔型: boolean[1],存放true,false;
2.引用数据类型:
类:class
接口:interface
数组:[]
使用细节:
整数类型:
-
java各整数类型有固定的范围和字段长度,不受具体OS(操作系统)的影响,以保证Java程序的可移植性;
-
Java的整型常量(具体值)默认为int型,声明long型常量后须加"l"或"L";
-
Java程序中常变量声明为int型,除非不足以表示大数,才使用long;
-
bit:计算机中最小存储单位
byte:计算机中基本存储单元
1byte = 8bit
浮点类型:
-
浮点数在机器中存放的形式:浮点=符号位+指数位+尾数位
-
位数部分可能丢失,造成精度损失(小数都是近似值)
-
与整数类型类似,java浮点类型也有固定的范围和字段长度, 不受具体OS的影响,[float 4个字节,double 8个字节]
-
java的浮点型常量(具体值)默认为double型,声明float型常量,须加"f"或"F"
-
浮点型常量有两种表现形式:
十进制数形式:5.12 512.0f .512(必须有小数点)
科学计数法形式:5.12e2,[5.12*10的2次方],5.12E-2 [5.12/10的2次方]
-
通常情况下,应该使用double型,因为他比float型更精确
-
浮点数使用陷阱:2.7和8.1/3比较(当我们对运算结果是小数的进行相等判断时,要小心!应该是以两个数的差值的绝对值,在某个精度范围类进行判断)
字符类型
- 字符常量是用单引号括起来的单个字符
- java中允许使用转义字符’'来讲其后的字符转变为特殊字符型常量
- 在java中,char的本质是一个整数,在输出时,是Unicode码对应的字符
- 可以直接给char赋一个整数,然后输出时,会按照对应的Unicode字符输出
- char类型是可以进行运算的,相当于一个整数,因为它都对应有Unicode码
布尔类型(Boolean)
不可以用0或非0的整数替代false和true,这点和C语言不同
基本数据类型转换
自动类型转换
- 当java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型
char -> int -> long -> float -> double
byte -> short -> int -> long -> float -> double
使用细节和注意
- 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后进行计算
- 当我们把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时会报错,反之就会进行自动类型转换
- (byte,short)和char 之间不会相互自动转换(当把具体数赋给byte时,先判断该数是否在byte范围内,如果是就可以)
- byte,short,char,三者可以计算,在计算时首先转换为int类型
- Boolean不参与转换
- 自动提升原则:表达式结果的类型自动提升为操作数中最大的类型
强制类型转换
- 自动类型转换的逆过程,将容量最大的数据类型转换为容量小的数据类型,使用时要加上强制转换符(),但可能造成精度降低或者溢出,格外要注意
使用细节和注意
- 当进行数据的大小从大——>小,就需要使用强制类型转换
- 强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级
- char类型可以保存int的常量值,但不能保存int的变量值,需要强转
- byte和short,char类型进行运算时,当做int类型处理
基本数据类型和String类型的转换
-
基本类型转Sting类型
将基本类型的值+""即可
-
通过基本类型的包装类调用parseXX方法即可
基本数据类型和String类型的转换注意和细节
- 在将String类型转成基本数据类型时,要确保String类型能够转成有效的数据,比如,我们可以把“123”,转成一个整数,但是不能把“hello”转成一个整数;
- 如果格式不正确,就会抛出异常,程序就会终止,这个问题在异常处理章节中处理
运算符
算数运算符
-
自增: ++
作为独立的语句使用啥的:前++和后++都完全等价于i=i+1;
作为表达式使用:
前++:++i先自增后赋值
后++:i++先赋值后自增
-
自减:–
关系运算符(比较运算符)
- 关系运算符的结果都是Boolean型的,也就是要么是true,要么是false;
- 关系表达式经常用在if结构的条件中或循环结构的条件中
细节说明:
- 关系运算符组成的表达式,我们称为关系表达式
- 比较运算符"==“不能误写成”="
逻辑运算符
用于连接多个条件(多个关系表达式),最终的结果也是一个Boolean值
逻辑运算规则:
-
a&b: &叫逻辑与
规则:当a和b同时为true,则结果为true,否则为false;
-
a&&b: &&叫短路与
规则:当a和b同时为true,则结果为true,否则为false;
区别:
对于&&短路与而言,如果第一个条件为false,后面的条件不再判断效率高;
对于&逻辑与而言,如果第一个条件为false,后面的条件仍然会判断,效率低;
-
a|b:|叫逻辑或
规则:当a和b,有一个为true,则结果为true,否则为false;
-
a||b:||叫短路或
规则:当a和b,有一个为true,则结果为true,否则为false;
区别:
对于||短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高;
对于|逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低;
-
!a:叫取反,或者非运算
规则:当a为true,则结果为false,当a为false时,结果为true;
-
a^b:叫逻辑异或
规则:当a和b不同时,则结果为true,否则为false;
赋值运算符
赋值运算符就是将某个运算后的值,赋给指定的变量
分类:
-
基本赋值运算符:=
-
复合赋值运算符:+=,-+,*=,/=等
a+=b => a = a+b;
a-=b => a = a-b;
特点:
-
运算顺序从右向左
-
赋值运算符的左边只能是变量,右边可以是变量,常量,表达式
-
复合赋值运算符会进行类型转换:
byte b = 2;
b += 3;(等价 b = (byte)(b + 2));
b++;(b = (byte)(b+1));
三元运算符
基本表达式:条件表达式?表达式1:表达式2;
-
如果条件表达式为true,运算后的结果是表达式1;
-
如果条件表达式为false,运算后的结果是表达式2;
口诀:[一灯大师:一真大师]
注意:
- 表达式1和表达式2要为可以赋给接受变量的类型(或可以自动转换)
- 三元运算符可以转成if–else语句
运算符优先级
-
运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序,如下表(上一行运算符总优先于下一行):
-
只有单目运算符,赋值运算符是从右向左运算的
标识符的命名规则和规范
概念
- java对各种变量,方法和类等命名时使用的字符序列为标识符;
- 凡是自己可以起名的地方都叫标识符
命名规则:
- 由26个英文字母大小写,0-9,或$组成;
- 数字不可以开头;
- 不可以使用关键字和保留字,但能包含关键字和保留字;
- java中严格区分大小写,长度无限制;
- 标识符不能包含空格;
规范:
- 包名:多单词组成时所有字母都大小写;aaa.bbb.ccc
- 类名,接口名:多单词组成时,所有单词首字母大写;XxxYyyZzz(大驼峰)
- 变量名,方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写;xxxYyyZzz(小驼峰,简称,驼峰法)
- 常量名:所有字母都大写,多单词时每个单词用下划线连接:XXX_YYY_ZZZ;
关键字:
定义:被java语言赋予了特殊含义,用做转梦用途的字符串
保留字:
现有java版本尚未使用,但以后版本可能会作为关键字使用,自己命名标识符要避免使用这些保留字:
进制
对于整数,有四种表示方式:
进制转换
-
转十进制
二进制转换十进制:
从最低位(右边)开始,将每个位上的数提取出来乘以2的(位数-1)次方,然后求和
八进制转换十进制:
从最低位(右边)开始,将每个位上的数提取出来乘以8的(位数-1)次方,然后求和
十六进制转换十进制:
从最低位(右边)开始,将每个位上的数提取出来乘以16的(位数-1)次方,然后求和
-
十进制转其他
转二进制:
将该数不断除以2,直到商为零为止,然后将每步得到的余数倒过来,就是对应的二进制
转八进制:
将该数不断除以8,直到商为零为止,然后将每步得到的余数倒过来,就是对应的八进制
转十六进制:
将该数不断除以16,直到商为零为止,然后将每步得到的余数倒过来,就是对应的十六进制
-
二进制转其他:
转八进制:
从最低位开始,将二进制数每三位一组,转成对应的八进制数即可
转十六进制:
从最低位开始,将二进制数每四位一组,转成对应的十六进制数即可
-
八进制转二进制:
将八进制数每一位,转成对应的一个3位的二进制数即可
-
将十六进制转成二进制:
将十六进制数每一位,转成对应的4位的一个二进制数即可