由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。
低----------------------------------------------------->高
byte,short,char-->int-->long-->float-->double
运算中,不同类型的数据先转化为同一类型,然后进行运算。
类型转换分两种
-
强制类型转换,在需要转换的变量名前面加括号,括号里面写数据类型,一般强制转换是用来转换高到低的类型
存在内存溢出的现象出现,要尽量避免这种情况出现,比如:
int i = 128;
byte b = (byte)i;
这里的b就因为出现了内存溢出,所以输出的b应该是-128,
-
自动类型转换,从低到高就是自动,什么都不用写就会自动转换
注意点
-
他不能对布尔值进行转换
-
不能吧对象类型转换为不相干的类型
-
在吧高容量转换到低容量的时候用强制转换
-
转换的时候可能存在内存溢出,或者精度问题,比如小数变成整数
-
JDK7新特性,数字之间可以用下划线_分割,可以靠这个来区分数字的位数,比如10_0000_0000
-
int money = 10_0000_0000;
int years = 20;
long total = money*years;
这里就因为超过int大小存在内存溢出的问题,但是因为前面是long,存在自动转换,但结果仍然是溢出的结果,这是因为total的计算是先计算里面两个int数的结果再转换的,改善的方法:
long total2 = money*((long)years);
这里先把里面的其中一个变成long类型,结果就能正常输出
变量
-
变量就是可以变化的量。
-
Java是强类型语言,没个变量你都必须额声明其类型。
-
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
-
数据类型 变量名 = 值: 可以使用都好隔开来生命多个同类型变量,但不推荐,这样程序可读性很差
变量作用域
-
类变量:从属于类,和类会一起出来一起消失,类变量就是在前面加一个static,就能之间输出
-
实例变量:在类里面方法外面,是从属于对象的,如果不自行初始化,会输出默认值,数值类型默认值是0或0.0,布尔值默认false,除了基本类型其他都是null,
-
局部变量:在方法里的,在使用之前必须声明和初始化值,只在括号内有效
变量命名规范
-
所有变量、方法、类名:见名知意
-
类成员变量:首字母小写和驼峰原则monthSalary
-
局部变量:首字母小写和驼峰原则
-
常量:大写字母和下划线MAX_VALUE
-
类名:首字母大写和驼峰原则
-
方法名:首字母小写和驼峰原则
常量
常量:初始化后不能再改变值!不会变动的值。
所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变
final 常量名 = 值
常量名一般用大写字母就行
static和final的顺序无所谓,他们都是修饰符,不存在先后顺序,还有public等
运算符
Java语言支持的运算符
-
算术运算符:+,-,*,/,%(模运算,取余数的意思),++,--
-
复制运算符: =
-
关系运算符:>,<,>=,<=,==(等于),!=(不等于),instanceof
-
逻辑运算符:&&(与),||(或),!(非)
-
位运算符:&,|,^,~,>>,<<,>>>
-
条件运算符? :
-
扩展赋值运算符:+=,-=,*=,/=
注意
-
在运算结果中有小数时,要注意数据类型
-
用算数运算符输出结果,当多个数中有long类型,结果为long类型,如果没有,结果就为Int类型,同理如果有double结果就是double
-
关系运算的返回结果,只有true或者false
-
优先级要注意,括号优先级最高, https://www.cnblogs.com/chenmingjun/p/8417163.html 具体的表格从高到低
运算符++(自增),--(自减)
b=a++就代表先给b赋值,再执行a=a+1
c=++a代表先将a自增,再给c赋值
重点是二者执行时机不同,但要注意每次执行后a的值都会改变
幂运算
Math.pow(2,3)这个代表2^3,,
很多运算我们会用工具来操作,Math是一种有用的类
逻辑运算符
与(and) 或(or) 非(取反)
逻辑与运算:两个变量都为真,结果才为真(b&&a)
逻辑或运算:两个变量有一个为真,其结果为真(a||b)
取反:如果是真,则变为假,,如果是假则变为真!(a&&b)
短路运算
用与运算时,如果前一个为假,则不执行后面的直接输出,称为短路
比如用
int c = 5;
boolean d = (c<4)&&(c++<4);
这样输出就会发现d的结果是false但 c 仍然是5
位运算
A = 0011 1100
B = 0000 1101
A&B 与运算 上下都是1才得1 =0000 1100
A|B或运算 如果对应位都是0都是0,如果有1直接为1 =0011 1101
A^B 异或 如果上下两个相同就是0,否在就是1 = 0011 0001
~B 取反 0对应1,1对应0 =1111 0010
2*8计算机最快运算,这样可以变成2 * 2 *2 *2
<<左移 >>右移
用java输出 2<<3就是16,意思是把2左移3位
左移就相当于*2,右移相当于/2
这样算效率极高
扩展运算符
a+=b的意思就是a=a+b,a-=b就是a=a-b
字符串连接符
在+加号运算符两侧,只要有一方存在String类型,会把其他操作数都转化成字符串再连接
但是如果字符串在+号后面,而+号前面另外有计算,会从前边开始先计算,再连接
三元运算符
x ? y : z
如果x==true,则结果为y,否在结果为z,比如
int score = 80;
String type = score<60 ?"不及格":"及格";
这里就会输出及格
包机制
包的本质就是文件夹。
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间
一般利用公司域名倒置作为包名:比如com.kuangstudy.blog
为了能使用某一个包的成员,我们需要在Java的程序中明确导入该包,使用”import“语句可完成此功能。在导入最后加.*这个通配符,就能把包下面的都导入
package必须放在代码最上面,导入的包里名字别重复
JavaDoc
JavaDoc命令是用来生成API文档的
在线API帮助文档 https://docs.oracle.com/javase/8/docs/api/
参数信息
-
@author 作者名
-
@version 版本号
-
@since 知名需要最早使用的jdk版本
-
@param 参数名
-
@return 返回值情况
-
@throws 异常抛出情况
package com.kuang.base;
/**
* @author rongzhi
* @version 1.1
* @since 1.8
*/
public class Doc {
String name;
/**
* @author rongzhi
* @param name
* @return
* @throws Exception
*/
public String test(String name) throws Exception{
return name;
}
}
这样写完后打开文件所在位置,打开cmd,输入javadoc -encoding UTF-8 -charset UTF-8 Doc.java(中间这些参数是为了能多显示点中文,少出现点乱码)
虽然会有几个警告但仍然能顺利输出,结束后原来的文件夹里多了很多文件,打开index.html,就能看到自动为我们生成的API文档。
使用IDEA生成JavaDoc文档
首先选择要生成JavaDoc的文件,
然后在最上方工具栏的Tools下选择Generate JavaDoc...,
进去后弹出下图,
点选file,在Output directory后面表示存放位置,在下面其他指令(other command)那里打上如图的代码,不要漏掉空格。