Java的基础内容02

Posted jimmykane

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java的基础内容02相关的知识,希望对你有一定的参考价值。

类型转换

由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。

低----------------------------------------------------->高

byte,short,char-->int-->long-->float-->double

(小数优先级高于整数)

运算中,不同类型的数据先转化为同一类型,然后进行运算。

类型转换分两种

  • 强制类型转换,在需要转换的变量名前面加括号,括号里面写数据类型,一般强制转换是用来转换高到低的类型

    存在内存溢出的现象出现,要尽量避免这种情况出现,比如:

    int i = 128;
    byte b = (byte)i;
       

    这里的b就因为出现了内存溢出,所以输出的b应该是-128,

     

  • 自动类型转换,从低到高就是自动,什么都不用写就会自动转换

注意点

  1. 他不能对布尔值进行转换

  2. 不能吧对象类型转换为不相干的类型

  3. 在吧高容量转换到低容量的时候用强制转换

  4. 转换的时候可能存在内存溢出,或者精度问题,比如小数变成整数

  5. JDK7新特性,数字之间可以用下划线_分割,可以靠这个来区分数字的位数,比如10_0000_0000

  6. 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)那里打上如图的代码,不要漏掉空格。

这样就能输出JavaDoc文档

以上是关于Java的基础内容02的主要内容,如果未能解决你的问题,请参考以下文章

day02-Java基础语法

如何在片段中使用 GetJsonFromUrlTask​​.java

201555332盛照宗—网络对抗实验1—逆向与bof基础

Java语言基础之方法的设计

片段(Java) | 机试题+算法思路+考点+代码解析 2023

JSP基础