阶段一:Java入门
每天都要看,不能间断!!!
*快捷键
复制整行:ctrl+shift+d//如果出现快捷键冲突,需要进行修改
向右缩进:Tab
向左缩进:shift+Tab
删除整行:ctrl+shift+k
格式化代码:ctrl+alt+l
主函数快捷键:psvm
输出快捷键:sout
补全代码:ctrl+alt+v
for(int i = 0; i < str.length ; i++) 快捷键 : str.length().fori
for(int i = str.length-1; i >= 0 ; i--) 快捷键 : str.length().forr
批量修改变量:shift + f6
写循环:ctrl+alt+t
1、.java:源文件,编译后形成.class文件(字节码文件)
编译:javac hello.java 编译后形成JVM可以识别的字节码文件,编译成功不会出现提示
运行:Java hello 有了可以执行的Java程序(hello.class),运行工具Java.exe对字节码文件进行执行,将.class文件装载到jvm中
ps:修改后的Java源文件需要重新编译,生成新的class文件后再执行才会生效
2、Java开发细节
Java程序执行入口:public static void main(String[] args){}
Java区分大小写;每个语句以分号结束;
一个源文件只有一个public类,其他类可以有很多,编译后,每个类对应一个class;
如果文件包含一个public类,则文件名命名必须以public类名命名;
可以将main写在非public类中,然后指定运行非public类,这样称为非public的main方法
3、转义字符
\t:制表位(固定宽度),对齐
\n:换行符
\ \:一个\
\\\\:\\
\ :转义字符
\"表示“ 以此类推
\r :回车,回车会把光标再次放到本行的第一个位置,例如:爱拼才\r会赢 -> 会赢才
4、注释
多行注释内不能嵌套多行注释
单行/多行注释不能被jvm编译
多行注释:ctrl + /
文档注释:注释内容可以被JDK提供的工具javadoc解析,生成一套以网页文件形式体现的程序的说明文档,一般写在类
/**
*@author 小明
*@version 2.1.0
*/
生成说明文档的命令:javadoc -d D:\\data -author -version comment.java
5、DOS命令
Dos:磁盘操作系统
常见的Dos命令:1、查看当前目录有什么:dir
2、切换到上一级:cd ..
3、切换到根目录:cd \
4、创建目录:md
5、删除目录:rd
6、切换到其他盘:cd /D C:
7、查看d盘下面的所有目录:tree d:\
6、变量
变量三要素:类型+名称+值
变量表示内存中的一个存储区域,类型不同,占用空间大小不同,int是4字节,double是8字节
变量必须先声明,后使用
“+”使用:左右都是数值,做加法运算;
左右一方有字符串,做拼接运算;
运算顺序:从左到右
7、数据类型
一、基本数据类型
1、数值型:整数(byte[1],short[2],int[4],long[8]);
注意:(1)字节固定,不随操作系统改变,可移植性
(2)声明long类型的数据,常量后需要加l或者L
例如:long n=3L;
浮点小数(float[4],double[8])
注意:(1)浮点数在机器中的存放形式:浮点数=符号位+指数位+尾数位
(2)尾数部分可能丢失,造成精度丢失
(3)浮点型默认是double型,声明float时需要在常量后加f或者F;但是double d=1.1f;是正确的
(4)表示形式:.123;5.12e2(5.12*10的2次方);5.12E-2(5.12/10的二次方)
(5)8.1/3:这是一个接近2.7的数,但是不是2.7;
因此,对运算结果是小数进行相等判断时,应该以两个数的差值的绝对值在某个精度范围内做判断
例如:Math.abs(num11-num12)<0.00000001
2、字符型(char[2]):存放单个字符;
可以存放汉字;
可以存放数字,但是输出的是数字代表的字符
注意:(1)单引号''
(2)允许使用转义字符,'\n'
(3)char的本质是数字,默认输出时是unicode对应的字符,要输出数字需要用int转换
(4)可以进行运算
(5)字符和码值的对应关系通过字符编码表决定
字符编码表:ASCII(一个字节表示,一共128个字符,但是最多可以表示256个字符,但是编码表的设计者只用了128个字符)
unicode(两个字节表示,字母汉字统一用两个字节)
utf-8(大小可变的编码,字母用一个字节,汉字用三个字节)
gbk(字母用一个字节,汉字用两个字节)
3、布尔型(boolean[1]):不可以用0或非0的整数代替true或者False,只能是True或者False
二、引用数据类型
1、类(class)
2、接口(interface)
3、数组([])
三、基本数据类型自动转换
1、精度小的可以自动转换成精度大数据类型;
char->int->long->float->double;
byte->short->int->long->float->double
2、多种类型的数据混合运算时,系统自动将所有数据转换成容量最大的数据类型再进行计算
例如:float f=10+1.1;这是错误的,因为10+1.1会自动转换成double型,不能赋值给float型
3、(byte、short)和char之间不会发生自动转换
例如:byte n=10;
char m=n;//错误,因为他们之间不能自动转换
当将具体的数值赋值给byte时,首先检查数字的范围(-128~127),如果符合,可以赋值,byte n=10;
但是当进行变量赋值时,就会进行变量判断,int b=10;byte a=b;这是不成立的。
4、byte、short、char 三者可以计算,其中任何一个参与运算时首先都要转换成int
例如:byte a=1;
byte b=2;
byte c=a+b;//这是错误的,byte+byte->int
5、boolean不参与转换
6、自动提升原则:表达式结果的类型自动提升为操作数中最大的类型
四、基本数据类型强制转换
1、将容量大的转换成容量小的数据类型,使用时要加上强制转换符(),但是会造成精度降低或者溢出
2、强转符号只针对最近的操作数有效,可使用小括号提高优先级
3、char可以保存int的常量值,但是不可以保存int的变量值,需要强转
例如:char a=10;
int b=19;
char a=b;//错误,需要char a=(char)b;
五、基本数据类型和字符串String类型转换
1、基本数据类型->String
基本类型的值+""
例如:int a=10;
String b=a+"";
2、String->基本数据类型
要确保String可以转换成有效的数据,格式不正确的话会抛出异常
用基本类型的包装类调用parseXX方法即可
例如:String S1="123";
int num1=Integer.parseInt(S1);
long num2=Long.parseLong(S1);
float num3=Float.parseFloat(S1);
double num4=Double.parseDouble(S1);
byte num5=Byte.parseByte(S1);
boolean num6=Boolean.parseBoolean("true");
字符串->字符:S1.charAt(0)//得到S1的第一个字符
8、Java API文档
API是java提供的基本编程接口,是java提供的类和相关方法
中文在线文档:www.matools.com
JDK->各种包->接口、类、异常->类包括字段、构造器、成员方法
9、运算符
%:取模/取余
+:字符串相加
!!!重:int i=1;
i=i++;运算过程会使用临时变量:temp=i; i=i+1; i=temp;所以 i=1;
i=++i;运算过程会使用临时变量:i=i+1; temp=i; i=temp;所以 i=2;
关系运算符结果是boolean
instanceof:检查是否是类的对象
逻辑运算符结果是boolean
1、短路与&&,短路或||,取反!
短路&&:a,b同时是true,结果为true,否则为false
只要第一个是false,第二个就不需要进行判断,结果直接是false
短路||:a,b有一个是true,结果是true,否则为false
只要第一个是true,第二个就不需要进行判断,结果直接是true
2、逻辑与&,逻辑或|
逻辑&:a,b同时是true,结果为true,否则为false
无论第一个是什么,第二个都要进行判断
逻辑|:a,b有一个是true,结果是true,否则为false
无论第一个是什么,第二个都要进行判断
3、a^b:异或
赋值运算符:
1、运算顺序:从右到左
2、赋值运算符左边是变量,右边可以是变量、常量、表达式
3、复合赋值运算符会进行类型转换:
例如:byte b=3;
b+=3;//b=(byte)(b+3);但是不能直接写b=b+3;
b++;//也会类型转换
三元运算符:条件表达式?表达式1:表达式2;
1、表达式1或者表达式2要为可以赋给接受变量的类型(或者可以自动转换或者强制转换)
例如:int c=a>b?a:b;//a和b必须都是int类型的
运算符优先级(从高到低):
只有单目运算和赋值运算是从右向左
(),{}
单目运算符
算术运算符
移位运算符
比较运算符
逻辑运算符
三元运算符
赋值运算符
10、标识符
规则:1、字母不可开头
2、不可使用关键字和保留字,但可以包含关键字和保留字
3、严格区分大小写
4、不能包含空格
规范:1、包名:多单词组成是所有字母都小写 aaa.bbb.ccc
2、类名、接口名:单词首字母大写 FirstSecondThird
3、变量名、方法名:第一个单词首字母小写,其他单词首字母大写 firstSecondThird
4、常量名:所有字母大写,且单词之间用_连接 FIRST_SECOND_THIRD
关键字:所有字母都是小写
11、键盘输入
扫描器对象:Scanner
步骤:1、导入包:java.util.*
2、创建该类的对象
3、调用
例如:Scanner myScanner=new Scanner(System.in);
String name=myScanner.next();//接受用户的输入
int age=myScanner.nextInt();
double sal=myScanner.nextDouble();
System.out.println("基本信息如下:姓名=" + name + "年龄=" + age +"薪水" + sal);
12、进制
二进制:以0b或者0B开头
八进制:以0开头
十六进制:以0x或者0X开头,此时的A-F不区分大小写
0的反码、补码都是0
java中的数都是有符号的
计算机运算时,都是以补码的方式运算的
看运算结果时,要看原码
13、位运算
>>:算术右移,低位溢出,符号位不变,并用符号位补溢出的高位
<<:算术左移,符号位不变,低位补0
>>>:逻辑右移,无符号右移,低位溢出,高位补0
没有<<<符号