首页 > 技术文章 > 运算符、包机制、JavaDoc

xunblogs 2021-03-17 23:01 原文

运算符

算数运算符

      • / %
        除法运算 如果两边都是整数,那么就是取整
        例如
int a = 3/2;
System.out.println(a);//输出为1,3除2等于1余1 这边的/就是取整的意思

那么怎么获得我们想要的1.5这个答案?
我们这样写

double b = (double)3/2;
System.out.println(b);//输出结果为1.5

那么这样写可以吗

double b = 3/2;
System.out.println(b);//输出结果为1.0

显然是不行的
那么原因是什么呢?
因为我们java默认类型是int类型,进行计算都是按照整数运算再把结果赋值给b的
我们把3转换成double类型,其实转换2也可以,这边有一个补充:进行计算的时候,按照最大容量的类型来进行

上边说到了强行转换,这边补充一个输出转换成String类型

int a = 2;
int b = 3;
System.out.println(a+b);//众所周知 2+3=5 所以输出结果为5没有问题
System.out.println(""+a+b);//输出结果为23,为什么结果是23呢?因为前面加上了字符串,java默认是字符串连接所以输出结果为23
System.out.println(a+b+"");//输出结果为"5" 为什么输出为字符串类型的"5"呢?因为这边根据优先级会先计算前面的加号得到5再和字符串连接作为字符串输出,前面的*+*号是计算符号,后面一个*+*是连接符,*+*号的两边如果出现了字符串,那么这个*+*号就是连接符

接下来记录一下%的用法

int a = 4/2;
int b = 5/2;
System.out.println(a);//输出结果为0   4/2正好可以整除余数是0
System.out.println(b);//输出结果为1   5/2得2余1 所以结果为1

接下来说一下++的用法,--一样参考即可

int a = 1;
int b = a++;
int c = ++a;
System.out.println(a);//输出结果为3 a++和++a的其实都是 a = a + 1 所以最后结果为3 本来是1后面加了两次
System.out.println(b);//输出结果为1 a++,++在a的后面说明是后自增的,这边的意思其实是 int b = a; a = a + 1;可以这么理解计算顺序
System.out.println(c);//输出结果为3 ++a,++在a的前面说明是先自增的,这边的意思其实是 a = a + 1; int c = a ;

接下来说一下&&(与)、||(或)、!(非)

boolean a = true;
boolean b = false;
System.out.println(a&&b);//输出结果为 false &&的两边都为true输出结果为true
System.out.println(a||b);//输出结果为 true  ||的两边有一个true输出结果为true
System.out.println(!(a&&b));//输出结果为 true !和后面的结果取反 a&&b = false 取反 就是true

这边需要明确一点&&和||是短路运算
什么是短路运算
就是只要有一个满足输出条件那么就不再往下计算计算了
举例

int a = 1;
boolean b = (a<0)&&(a++<0);
System.out.println(b);//输出结果为false
System.out.println(a);//结果为1,为什么不是2,不是后面有一个a++吗?因为我们的&&是短路计算,1<0不成立结果就已经满足输出条件了为false,所以就不再计算往下执行判断了

接下来是&(与)、|(或)、^(亦或),~(非)
注意这边是位运算符,是用来计算二进制用的,不是用来计算其他的数据的,所以一般用来处理二进制数据,平时一般用不到
举例

/*
        A = 0011 1100
        B = 0000 1101

        A&B = 0000 1100 与 同位上的两个都为1结果为1否则结果为0
        A|B = 0011 1101 或 同位上的两个结果有一个位1结果就为1
        A^B = 0011 0001 亦或 同位上的两个结果相同为0不同为1
        ~B = 1111 0010 取反 按位取反即可
*/

右移>> 、 左移<<
表示按位向左或者向右移动
右移一位表示当前数据除2
左移一位表示当前数据乘2
举例

 int a = 2;
 int b = a<<3;
 int c = b>>2;
 System.out.println(a);//输出结果为2   2在二进制的表示为 10
 System.out.println(b);//输出结果为16  二进制10的1向左移3位变成10000表示2*2*2*2=16
 System.out.println(c);//输出结果为4   二进制10000向右移2位变成100表示16/2/2=4

补充:
这边222*2表示2的4次方,那么怎么在java中表示呢?
我们可以引用一个Math类
举例

     double pow = Math.pow(2,4);
     System.out.println(pow);//输出结果就为2*2*2*2=16

三元运算符
格式为
条件A?值1:值2
举例

  int score1 = 60;
  String type1 = (score1>=60)?"及格":"不及格";
  int score2 = 59;
  String type2 = (score1>=60)?"及格":"不及格";
  System.out.println(type1);//输出结果为"及格"
  System.out.println(type2);//输出结果为"不及格"

//上面的举例说明了,如果?前面的结果为true则返回结果值1,否则返回结果值2

包机制

为什么要用到包
包就是我们常说的文件夹两者是一样的
我们一个文件夹中不可以同时存在两个文件名相同的同类型文件
但是我们可以在文件夹中再建一个文件夹,然后在新建的文件夹中增加一个前面文件夹中已存在的同类型同名文件,方便我们的管理
能够起到一个防止命名空间重复的作用

一般包名我们用公司域名倒置来命名
例如
第一个包名叫com,下面还有一个包我们可以叫baidu,如果下面还有一个包我们可以叫www

怎么导入我们需要的包?因为我们的程序中经常会用到其他类里面的方法或者实例变量
这个时候我们不能直接访问,需要导入该类的路径才能访问到
这个时候可以用关键词import来引入
例如 我们需要用到日期类,这个时候就要引入日期类所在路径,我们可以这样引入

package com.xxx.xxx
import java.util.Date;
public class Demo{

}

JavaDoc

JDKAPI帮助文档
javadoc命令是用来根据文档注释生成自己的API 文档的
参数信息

  • @author 作者
  • @version 版本号
  • @since 指明需要最早使用的jdk版本
  • @param 参数名
  • @return 返回值情况
  • @throws 异常抛出情况

增加一个doc命令使用cmd控制台的doc命令生成API帮助文档
javadoc -encoding UTF-8 -charset UTF-8 xxx.java

​ 编码类型 字符集

使用IDEA生成JavaDoc文档

推荐阅读