跟着狂神学Java的第二天O(∩_∩)O~,养成一个总结的习惯
志同道合的小伙伴可以一起学习狂神的视频
本节地址:https://www.kuangstudy.com/course/play/1317504142650658818
Java注释有单行注释
,多行注释
和文本注释
三种
单行注释:用双斜线//
后面跟要注释的内容
eg://我是一条注释
多行注释:用/*
开始,用*/
结束,在中间写注释的内容
eg:
/*多行注释 我是一条注释 我也是一条注释 我也是一条注释 */
文本注释(用于JavaDoc注释):/** */
eg:
/** * @Description HelloWorld * @Author yl */
标志符
Java的所有组成部分都需要名字。类名、变量名以及方法名都被称之为标志符。
所有的标志符都应该以字母(a-z,A-Z),美元符($)、或者下划线(_)开头
首字母之后可以是字母,美元符,下划线,数字的自由组合
不能使用关键字作为变量名或方法
Java对大小写敏感!
八大基本类型
//八大基本类型 int num1=220000000; //占4个字节 byte num2=100; //占1个字节 short num3=10000; //占2个字节 long num4=234239809L;//long类型要在数字后面加一个L 占8个字节 float num5=30.5F;//float在数字后面加一个F double num6=4.14242353423; char name='狂'; //占1个字节 boolean flag=true; //占1个字节
引用类型
类,接口,数组
//整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x int i=10; int i2=010;//八进制0 int i3=0x10;//十六进制0x 0~9 A~F System.out.println(i); System.out.println(i2); System.out.println(i3); System.out.println("================================"); //================================ //浮点数拓展 银行业务怎么表示?钱 //BigDecimal 数学工具类 //================================ //float 有限 离散 舍入误差 大约 接近但不等于 //double //最好完全避免使用浮点数进行比较 float f=0.1f;//0.1 double d=1.0/10;//0.1 System.out.println(f==d);//false float d1=2342342345823478324234F; float d2=d1+1; System.out.println(d1==d2);//true //================================ //字符拓展 //================================ System.out.println("================================"); char c1='a'; char c2='中'; System.out.println(c1); System.out.println((int)c1); System.out.println(c2); System.out.println((int)c1); //所有的字符本质还是数字 //编码 Unicode 表:(97=a 65=A) 2字节 //U000 UFFF char c3='\u0061'; System.out.println(c3);//a //转义字符 // \t 制表符 // \n 换行 System.out.println("Hello\nWorld!");
//强制类型转换 高->低 //自动转换 低->高 /*注意点 * 1.不能对布尔值进行转换 * 2.不能把对象类型转换为不相干的类型 * 3.在把高容量转换到低容量的时候,强制转换 * 4.转换的时候可能存在内存溢出或者精度问题 * */
变量:会变的量(类变量,实例变量,局部变量)
常量:不会变的量
作用域:作用范围
eg:
public class Demo06 { //类变量 static static double salary = 2500; //属性 :变量 //实例变量:从属于对象;如果不自行初始化,则为这个类型的默认值 0 0.0 u000 //布尔值:默认是false //除了基本类型,其余的默认值都是null String name; int age; //main方法 public static void main(String[] args) { //局部变量,必须声明和初始化值 int i=10; System.out.println(i); //变量类型 变量名字 = new Demo06(); Demo06 demo06 = new Demo06(); System.out.println(demo06.age); System.out.println(demo06.name); //类变量 System.out.println(salary); } //其他方法 public void add(){ } }
变量命名规范:
/**变量命名规范 *所有变量、方法、类名:见名知意 *类成员变量:首字母小写和驼峰原则:monthSalary 除了第一个单词以外,后面的单词首字母大写 *局部变量:首字母小写和驼峰原则 *常量:大写字母和下划线:MAX_VALUE * 类名:首字母大写和驼峰原则:Man,GoodMan * 方法名:首字母小写和驼峰原则:run(),runRun() */
算术运算符:+,-,*,、,%,++,--
赋值运算符:=
关系运算符:>,<,>=,<=,==,!=instanceof
逻辑运算符:&&,||,!
位运算符:&,|,^,~,>>,<<
条件运算符:?:
扩展赋值运算符:+=,-=,*=,/=
需要注意的是除法/,整数的除法是向下取整的
int a=5/3; System.out.println(a);//输出的是1
//++ -- 自增,自减 一元运算符 int a = 3; int b = a++; int c = ++a; System.out.println(a);//a=5 System.out.println(b);//b=3 System.out.println(c);//c=5
拿上面的代码进行说明:
++表示自增即自己+1,但是放在前面和放在后面效果是不一样的:
int b=a++;
其实相当于int b=a;a=a+1;
,也就是先把a的值赋给b,再把a的值增加1;
int c=++a;
其实相当于a=a+1; int c=a;
,因此是先把a的值加1,然后再赋给c;
那么上面的代码转化一下就是:
int a = 3; int b = a;//此时b=3; a=a+1;//此时a=4; a=a+1;//此时a=5; int c = a;//此时c=5; System.out.println(a);//a=5 System.out.println(b);//b=3 System.out.println(c);//c=5
因此会输出5 3 5
逻辑运算符:&&,||,!(与,或,非)
&&:逻辑与,二者同时成立结果为真,否则为假
||:逻辑或,只要有一个为真结果就为真,否则为假
!:逻辑非:对原来的结果取反,真变假,假变真
特别注意:&&和||都具有短路运算的性质
所谓短路性质:例如A&&B,当A已经判断出是假了,就不会再判断B了,因为不管B是真是假,结果都是假,同理A||B,当A判断为真也不会再判断B了,因为只要有一个为真结果就是真。
eg:
//短路运算 int c = 5; boolean d= (c<4) && (c++<5);//因为前面已经判断为false了,&&的结果肯定为false,后面的条件不用再判断 System.out.println(d);//false System.out.println(c);//5 //下面同理短路运算 int e = 5; boolean f = (e<6) || (e++<7); System.out.println(f);//true System.out.println(e);//5
位运算符:&,|,^,~,<<,>>,
位运算符都是对二进制位进行操作的。
&:按位与:两个数逐位进行与运算,每一位的规则为二者都为1结果为1,否则为0
|:按位或:两个数逐位进行或运算,每一位的规则为二者至少有1个1结果为1,否则为0
^:按位异或:两个数逐位进行异或运算,每一位的规则为相同为0,不同为1
~:按位非:二进制每一位0变1,1变0
A = 0011 1100 B = 0000 1101 A&B =0000 1100 A|B =0011 1101 A^B =0011 0001 ~B = 1111 0010
<<:左移
左移n位相当于乘以2的n次方
>>:右移
右移n位相当于除以2的n次方
位移操作会比乘除法效率高很多
"? :
"是一个三元运算符,相当于if else
eg: int c=a>b?a:b;
的意思相当于以下语句:
if(a>b){ c=a; } else{ c=b; }