运算符
优先级()内最先运算
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全部导入进去,不用再一个一个导入
阿里巴巴开发手册 去看,以达到开发的规范
java Dos 生成文档
能自动注释的东西
参数信息:@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文档
*/
}
}