java
常见的dos命令
dir:列出当前的目录下的文件以及文件夹
md:创建目录
rd:删除目录
cd:进入指定目录
cd..:退回上一级目录
cd\:退回到根目录
del:删除文件(不是目录)
exit:退出dos命令
环境变量path配置及其作用:为了在dos的任意目录使用Java和 javac命令
1.先配置JAVA_HOME = 指向jdk安装的主目录
2.编辑path环境变量,增加 %JAVA_HOME%\bin
java语言特点
-
第一点:面对对象
两个基本概念:类,对象
三大特性:封装,继承,多态 -
第二点:健壮性 完善性
提供了一个相对安全的内存管理和访问机制
-
第三点:跨平台性 jvm
通过Java编写的应用程序可以在不同的系统平台上运行
原理:在需要运行Java应用程序的操作系统上先安装一个Java虚拟机(jvm)
两种核心机制
- Java虚拟机(JVM)
- 垃圾回收机制(GC)
关键字:在java编程的时候,在关键的地方使用的单词,体现关键的地方的含义
保留字:可能在以后被用来作为关键字的单词,已经被Java预定了的单词
标识符:凡是可以自己起名字的地方都是标识符
-
由26个英文字母大小写,0-9,_或者$组成
-
数字不可以开头
-
不可以使用关键字和保留字,但能包含关键字和保留字
-
Java中严格区分大小写,长度无限制
-
标识符不能包含空格
尽量见名知意
public class test {//表示Test是一个类,是一个public类
public static void main(String[] args){//表示一个主方法,即我们程序的入口
System.out.println("你好!");//;表示语句的结束
}
}//运行的是test这个类,所以dos输入的时候直接输入Java test
如果源文件包含一个public类,则文件名必须按该类名命名
一个源文件中最多只能有一个public类。其它类的个数不限
编译后,每一个类都对应一个.class
public class Test {
public static void main(String[] args){
System.out.println("你好啊!");
}
}//也可以将main方法写在非public类中,然后指定运行非public类,
class Dog {//这样入口方法就是非public的main方法
public static void main(String[] args){
System.out.println("你好,tiger!");
}
}
java常用转义字符
-
\t:一个制表符,实现对齐的功能
-
\n:换行符
-
\\:一个\
-
\“:一个”
-
\‘:一个’
-
\r:一个回车 System.out.print(“你好\r个屁”)
文档注释
当开发一个大型软件时,需要定义成千上万个类,而且需要很多人参与开发。每个人都会开发一些类,并在类里定义一些方法和域提供给其他人使用,但其他人怎么知道如何使用这些类和方法呢?这时就需要提供一份说明文档,用于说明每个类、每个方法的用途。当其他人使用一个类或者一个方法时,他无需关心这个类或这个方法的具体实现,他只要知道这个类或这个方法的功能即可,然后使用这个类或方法来实现具体的目的,也就是通过调用应用程序接口(API)来编程。API文档就是用来说明这些应用程序接口的文档。对于java语言而言,API文档通常详细的说明了每个类、每个方法的功能及用法。
附带javadoc 标签-
生成格式:javadoc -d 文件夹名字1 -xx -yy Demo3.java
java代码规范
- 类,方法的注释,要以javadoc的方式来写
- 非Java Doc的注释,往往是给代码的维护者看的,着重告诉读者为什么这样写,如何修改,需要注意什么
- 使用tab操作实现缩进,默认整体向右移动的时候,用shift+tab整体向左移
- 运算符和 = 两边习惯性各加一个空格
- 源文件使用utf-8编码
- 行宽度不要超过80字符
- 代码编写次行风格和行尾风格
相对路径
从当前目录开始定位,形成的一个路径(…\abc2\test200\hello.tet从当前路径两次返回上一级,然后进入abc目录,再进入)
绝对路径
从顶级路径d,开始定位,形成的路径(d:abc2\test200\hello.tet)
java变量:变量 = 变量名 + 值 + 数据类型
变量必须先声明,后使用
变量在同一个作用域内不能同名
加号的作用
1.当左右两边都是数值型,则做加法运算
2.当左右两边有一边为字符串,则做拼接运算
Java数据类型
**Java的整型常量(具体值)默认为int型,声明long型常量须后面加 ’ l '或者‘ L ’ **
bit为计算机中最小的存储单位,byte:计算机中基本存储单元,1 byte = 8 bit
大数转小数要强制转换,小数转大数是隐式转换
浮点数在机器中的存放形式
浮点数 = 符号位 + 指数位 + 尾数位 尾数部分可能丢失,造成精度丢失(小数都是近似值)
浮点数默认为double型,声明float型常量,后面必须加’f’或者‘F
判断小数相等
应该是以两个小数的差值的绝对值,在某个精度范围内判断
Java API(应用程序编程接口)
是Java提供的基本编程接口
中文在线文档:https://www.matools.com
Java语言提供了大量基础类,因此Java开发公司也为这些基础类提供了相应的API文档,用于告诉开发者如何使用这些类,以及这些类里面包含的方法
char的本质
char的本质是一个整数,在输出时,是unicode码对应的字符
字符本质谈论
字符型 存储到计算机中,需要将字符对应的码值(整数)找出来,比如’a’
存储:‘a’ = = > 码值 97 = = > 二进制 = = > 存储
读取:二进制 = = > 97 = = > ‘a’ = = > 显示
有许多字符编码表
**1.ASCII 编码表 一个字节表示,有128个,实际上一个字节可以表示256个字符,只用128个 **
2.Unicode 固定占用两个字节,字符,字母,汉字 将世界上所有符号纳入其中 没有乱码问题 并且兼容ASCII码
3. utf-8 字符占一个字节 汉字占3个字节 在Unicode上有所改进
4. gbk 字母占1 汉字占2
**5. gb2312 **
6. big2 码 繁体中文 港台
不可以用 0和 1代替 false和true ,和 C 语言不同
在java程序中进行赋值或者运算时,精度小的类型自动转换成精度大的数据类型
自动转换细节
1.有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再计算
2.当我们把精度大的数据类型赋值给精度小的数据类型时,就会报错
3.boolean 不参与转换
4.自动提升原则:表达式结果的类型自动提升为 操作数中最大的类型
5.(byte,short)和 char 之间不会相互自动转换,但是三者之间可以计算,在计算时先转换成int类型(当把具体的数赋给byte时,先判断是否在byte范围内,如果是就可以,否则就出错)
强制类型转换
将容量大的数据类型强制转换成容量小的类型,要带强制转换符 (),但是可能造成精度损失,或者数据溢出
强转细节
1.强转符号只针对最近的操作数有效,使用小括号提升优先级
2.char 类型可以保存int类型的常量值,但是不能保存int类型的变量值,需要强转
char c1= 100;
int m = 100;
char c2 = m;
char c3 = (char)m;
System.out.println(c2);
3.byte 和 short 类型在进行运算时,当做int 类型处理
基本数据类型和String类型的转换
1.基本类型转String类型:将基本类型的值 + " " 即可
int n1 = 100;
String s1 = n1 + "";
2. String 转基本数据类型:通过基本类型的包装类调用 parseXX 方法即可
String s5 = "123";
int num1 = Integer.parseInt(s5);
Double.parseDouble("123.1");
Float.parseFloat("123.45");
Short.parseShort("12");
Long.parseLong("1234");
Boolean.parseBoolean("true");
Byte.parseByte("12");
//怎么把字符串转化成字符char
System.out.println(s5.charAt(0));//取出字符串第一个字符'1'
注意:1.在将String转换成基本数据类型时,要确保String类型能够转成有效的数据,比如可以把 “123” 转成一个整数,而不能将"hello"转成一个整数
2.格式不正确会抛出异常
运算符
1.算术运算符
a++ :先取值再运算 ++a :先运算再取值
int i = 1;
i = i++;//规则使用临时变量:(1) temp = i (2) i = i + 1 (3) i = temp
System.out.print(i);//此时i=1
int i = 1;
i = ++i;//规则使用临时变量:(1)i = i + 1 (2) temp = i (3) i = temp
System.out.print(i);// 2
2.赋值运算符
3.关系运算符
4.逻辑运算符
& 短路与 &&逻辑与 两者判断结果都是一样的 (两个条件都为true,结果则为true)
**&&逻辑与:如果第一个条件为false,则第二个条件不会被判断(执行),最终结果为false **
&短路与:不管第一个条件是否为false,第二个条件都要判断,效率低
| 短路或 :不管第一个条件是否为true,第二个条件都要判断,效率低
|| 逻辑或: 如果第一个条件为true,则第二个条件不会被判断,最终结果为true
’ & ‘和’ | ‘的运算分别对应’ && ‘和’ || ’ 一样的
^逻辑异或
a^b :当a 与 b 不同时,则结果为true,否则为false
5.位运算符
6.三元运算符
条件表达式 ? 表达式1 : 表达式2;
如果条件表达式为true,运算后的结果是表达式1
如果条件表达式为false,运算后的结果是表达式2
表达式1和表达式2 要为可以赋给接受变量的类型(或可以自动转换)(类型转换)
三元运算符可以转成 if–else语句
int a = 1;
int b = 2;
int c = 3;
int d = (a > b ? a : b) > c ? (a > b ? a : b) : c;//判断三个数中哪个最大
只有单目运算和赋值运算是从左到右运算的
^逻辑异或
a^b :当a 与 b 不同时,则结果为true,否则为false
5.位运算符
6.三元运算符
条件表达式 ? 表达式1 : 表达式2;
如果条件表达式为true,运算后的结果是表达式1
如果条件表达式为false,运算后的结果是表达式2
表达式1和表达式2 要为可以赋给接受变量的类型(或可以自动转换)(类型转换)
三元运算符可以转成 if–else语句
int a = 1;
int b = 2;
int c = 3;
int d = (a > b ? a : b) > c ? (a > b ? a : b) : c;//判断三个数中哪个最大