优先级()内最先运算
1 算术运算符:+,-,*,/,%(取余,也叫模运算),++(自增),--(自减)
2.赋值运算符 =
3.关系运算符 > , < ,>= , <= , == (等于), !=(不等于) , instanceof
4 逻辑运算符 &&(与) , || (或),!(非,非你即我)
以上重点掌握
5 位运算符 &(与),|(或),^(异或),~(非) ,>>(右移) , << (左移), >>>, (了解就可!)
6 条件运算符 ? : 这种
7 扩展赋值运算符 += , -= ,*= , /=
public class Demo01 { public static void main(String[] args) { //二元运算符 // 快捷键 ctrl+d 复制当前行到下一行 int a =10; int b =20; int c =25; int d =25; System.out.println(a+b); System.out.println(a-b); System.out.println(a*b); System.out.println(a/b);//结果为0.5,但int为整数类型,所以取靠0,输出为0 //所以正确应该强转一下 System.out.println(a/(double)b);//输出0.5 } }
public class Demo02 { public static void main(String[] args) { long a =131316464L; int b = 123; short c =10; byte d = 8; System.out.println(a+b+c+d);//输出为long类型 System.out.println(b+c+d);//输出为int类型 System.out.println( c+d);//输出为int类型,因为自动往高位int转。 //即int以上类型运算,输出为最高的那个类型;int及int一下类型运算,输出只为int类型,不存在输出short,byte类型 } }
public class Demo03 { public static void main(String[] args) { // 关系运算符返回的结果:正确、错误;即boolean来表示 int a=10; int b=20; int c=11; System.out.println(a>b);//false System.out.println(a<b); //true System.out.println(a==b);//false System.out.println(a>=b);//false System.out.println(a<=b);//true System.out.println(a!=b);//true System.out.println(c%a);//输出取余为1,模运算 } }
++;--的运算
public class Demo04 { public static void main(String[] args) { // ++自增, --自减,因为需要一个数就可,即一元运算符 int a = 10; int b = a++;//++放后边意思是执行完这行代码后,先给b赋值,a再自增,,故a为10时已经赋值给b,b输出为10 // a++意思就是a+1;相当于省略了a=a+1一行代码 System.out.println(a);//输出结果为11 int c = ++a;//++放前边意思是执行完这行代码后,a先自增,再给c赋值 //即a自增了两次,赋值给c,所以输出a为12,c为12 System.out.println(a);//输出结果为12 System.out.println(b);//输出结果为10 System.out.println(c);//输出结果为12 //总结:a++,先把a赋值,后再对a进行运算+1;++a是先让a运算+1.后再赋值给其他 //a--;--a同++ int d = 10; int e =d--; int f =--d; System.out.println(d);//输出为8 System.out.println(e);//输出为10 System.out.println(f);//输出为8 //数学中幂运算 ,在java中2^3这样表示2的三次方是不对的,用math数学工具中的pow,向下边表示2的3次方 double pow = Math.pow(2, 3); //看源码:ctrl+鼠标左键 //在码完Math.pow(2, 3)后可alt+enter直接出现double pow System.out.println(pow);//输出8.0 } }
逻辑运算
public class Demo05 { //逻辑运算符 public static void main(String[] args) { //与(and),或(or);非(取反) boolean a = true; boolean b = false; System.out.println("a&&b:"+(a&&b));//输出a&&b:false;逻辑与运算:两个变量都为真,结果才为true,即一假全假,全真才真 System.out.println("a||b:"+(a||b));//输出a||b:true;逻辑或运算:两个变量都为假,结果才为false,即一真全真,全假才假 System.out.println("!(a&&b):"+!(a&&b));//输出!(a&&b):true;逻辑非运算:结果取反,是真则变成假,是假则变成真 //短路运算 System.out.println("a&&b:"+(b&&a));//如此,因为b为false,所以一假全假,就已经输出了,后边的b&&a不再运算 //短路运算验证 int c =5; boolean d = (c<4)&&(c++<4); System.out.println(d);//输出false System.out.println(c);//输出c=5 //可知c++没有运算,如果&&及后边进行运算,则c=6 } }
位运算
public class Demo06 { public static void main(String[] args) { //位运算 /* A = 0011 1100 B = 0000 1101 -------------------------------------------------------------------- A&B=0000 1100 位与运算:即A的二进制代码与B都为1时,结果得1,其他都得0 A/B=0011 1101 位或运算:A与B都为0时才为0,有一个1结果就为1 A^B=0011 0001 位异或运算,A与B的代码相同取0,不同取1 ~A =1100 0011 位取反运算,是0就取1,是1就取0 实际跟逻辑运算符一样的逻辑思路 2*8最快的运算是2*2*2*2 因为是位运算,直接跟底层打交道,效率高 <<(左移)相当于*2; >>(右移)相当于/2 位运算 0000 0000 =0 0000 0001 =1 0000 0010 =2 0000 0011 =3 0000 0100 =4 可看出 0000 1000 =8;0001 0000 =16 如(2<<3)代表2左移3位 即变成 0001 0000即=16 */ System.out.println(2<<3);//输出16 //因此<<左移就相当于*2;>>右移就相当于/2 } }
扩展赋值运算符
public class Demo07 { public static void main(String[] args) { // 扩展赋值运算符 int a =10; int b =20; int c =10; a += b;//即a=a+b的意思 c-=b;//即c=c-b的意思 System.out.println(a);//输出30 System.out.println(c);//输出-20 //字符串连接符 + , String System.out.println(a+b);//结果50 是a=a+b后的a再加b System.out.println(""+a+b);//输出3020,""是字符串的意思,字符串加东西,后边会自动转换为字符串形式 System.out.println(a+b+"");//输出50,这样是先运算,后成为字符串形式 } }
条件运算符:三元运算符
public class Demo08 { public static void main(String[] args) { //三元运算符 // x ? y : z // 即如果x==true,则结果为y,否则结果为z int score = 80; String type = score<60 ?"不及格" : "及格";//必须掌握 int 转码 = 30_0000; String type2 = 转码<20_0000?"回家种地":"人上人"; System.out.println(type);// 输出及格 System.out.println(type2);// 输出人上人 } }
实质相当于文件夹
一般利用公司域名倒置作为包名,如 com.baidu.www,又如下图包后,最上边都有idea自动加的包和包路径
![](C:\Users\有所为\Desktop\Mark Down 学习\包机制.png)
包语句的语法格式为:package pkg[. pkg2[.pkg3...]];
为了能够使用某一包的成员,我们需要在java程序中明确导入该包,使用”import“语句可完成此功能
import package1 [.package2...].(classname|*);
package com.lihao.operator; import java.util.Date; public class Demo08 { public static void main(String[] args) { Date //如果直接输入Date则会显错,按住alt+shift+enter 直接就导入包了,且import必须在package下 // 导入尽量不要让两个包里边的名字重复 } } import com.lihao.base.*; //.*是通配符的意思,即base包里的Demo01到Demo06全部导入进去,不用再一个一个导入
阿里巴巴开发手册 去看,以达到开发的规范
能自动注释的东西
参数信息:@auther 作者名
@veision 版本号
@since 指明需要最早使用的jdk版本
@param 参数名
@return 返回值情况
@throws 异常抛出情况
package com.lihao.base; /** * @author li * @version 1.0(版本) * @since 1.8(开发版本?) */ public class Doc { String name;//属性 /** * @param name //param 指参数 * @return */ public String test(String name){ //方法 return name; //加在类上边就是类的注释,加在方法上边就是方法是注释 //创建Doc的两种方法 /*第一种 形式:javadoc 参数 java文件 找到所在的文件地址,打开cmd输入javadoc -encoding UTF-8 -charset UTF-8 Doc.java 即可生成Doc文档 */ /*第二种 java中找到tool工具 找到tool工具中的generate javaDoc 打开后在文件地址处找到文件地址 在locale处配置语言 zh_CN 在other command line arguments 处输入编码集-encoding UTF-8 -charset UTF-8 ,更好的把文件内的中文识别 即可生成Doc文档 */ } }