首页 > 编程语言 > 详细

Java合集二

时间:2021-03-29 20:43:50      阅读:37      评论:0      收藏:0      [点我收藏+]

一、数据类型和运算符

Java是一门强类型语言,哪里可以体现其强类型的观点?

  1. 所有变量必须先申明后使用
  2. 指定类型的变量只能接受类型相符的值
  3. 编译过程可以发现一些源代码的错误

1、文档注释

  1. 编写Java源代码时添加了合适的文档注释,可通过javadoc工具将源代码中的文档注释提取成一份系统的API文档。
  2. javadoc工具默认只会处理public或protected修饰的类、接口、方法、成员变量、构造器、和内部类之前的文档注释,在使用javado工具时增加-private选项可以提取private修饰的内容。
  3. 如果需要提取@author、@version两个标记的信息,需要在使用javadoc工具时指定-author、-version选项。
  4. 文档注释以斜线后紧跟两个星号(/**)开始,以星号后一个斜线(*/)结束。
  5. 包描述文件名通常是package.html,并与该包下所有源文件放在一起,javadoc会提取中的内容。
  6. 支持HTML5。

命令:javadoc 选项 Java源文件 | 包

常用标记如下:

  • @author:指定作者
  • @version:指定版本
  • @deprecated:不推荐使用的方法
  • @param:方法的参数说明
  • @return:方法返回值说明
  • @exception:异常类型
  • @throws:与@exception同义

2、标识符

  1. Java11支持Unicode10.0字符集,因此Java标识符可以使用Unicode10.0表示的多种语言的字符。
  2. Java9开始不允使用单独的下划线(_)作为标识符。

标识符使用规则:

  • 由字母,数字,下划线_,美元$组成,但数字不能开头。(字母不仅是指英文字母,中文、日文等也可)
  • 不能是java的关键字和保留字,但中间可以包含标识符。
  • 不能包含空格。
  • 只能包含美元符($),不能包含@、#等其他特殊字符。

3、关键字

  1. 关键字都是小写。
  2. 共51个,包含下划线、三个直接量(true、false、null)、两个未使用的关键字(goto,const)(又称为保留字)。
  3. Java10引入的var不是关键字,可做标识符。

4、基本数据类型

1、整型

  • 1字节:byte,8位,-2^7 ~ 2^7-1
  • 2字节:short,16位,-2^15 ~ 2^15-1
  • 4字节:int,32位,-2^31 ~ 2^31-1
  • 8字节:long,64位,-2^63 ~ 2^63-1,整数之后增加L作为后缀
long i = 43;//这不是因为Java把一个较小的数当成long类型来处理,而是int类型的值自动转型为long了
  1. 整数常量有四种表示方式:十进制、二进制(以0b|0B开头)、八进制(以0开头)、十六进制(以0x|0X开头)。
  2. 数字在底层都是以二进制存在,以补码的形式保存。
  3. 补码计算:正数补码和原码相同,负数补码是反码加一;反码是原码按位取反,最高位(符号位)不变。

2、字符型(char)

  1. 一字节字符集:ASCII;二字节字符集:Unicode(Java使用此字符集)。
  2. 字符型本质也是一种整数类型,相当于无符号整数类型。

3、浮点型

默认是double的数,float的数后面要加f作为后缀。

Java 语言的浮点数有两种表示方式:

  1. 十进制数形式,浮点数必须包含小数,否则系统将认为是一个int 型
  2. 科学计数法形式:5.12e2,(只有浮点数才有科学计数法)

三个特殊的浮点数值:正无穷大(POSITIVE_INFINITY)、负无穷大(NEGATIVE_INFINITY)、非数(NaN)。

所有的正无穷大都是相等,负无穷大都是相等,而非数不与任何数值相等,与自己也不相等,只有浮点数除0 才可以得到这三个数,整数除0将报错。

	public static void main(String[] args)
	{
		float af = 5.2345556f;
		// 下面将看到af的值已经发生了改变
		System.out.println(af);//5.2345557
		double a = 0.0;
		double c = Double.NEGATIVE_INFINITY;
		float d = Float.NEGATIVE_INFINITY;
		// 看到float和double的负无穷大是相等的。
		System.out.println(c == d);//true
		// 0.0除以0.0将出现非数
		System.out.println(a / a);//NaN
		// 两个非数之间是不相等的
		System.out.println(a / a == Float.NaN);//false
		// 所有正无穷大都是相等的
		System.out.println(6.0 / 0 == 555.0/0);//true
		// 负数除以0.0得到负无穷大
		System.out.println(-8 / a);//-Infinity
		// 下面代码将抛出除以0的异常
//		System.out.println(0 / 0);// by zero
	}

4、布尔型

  • boolean类型的值只能是true和false。

  • Java规范并没有强制指定boolean类型的变量所占用的空间,由于大部分计算机分配内存最小单位是字节(8位),因此大部分boolean占用8位。

  • 与字符串进行连接运算时,自动转成字符串。

5、类型转换

1、自动类型转换

  1. 表数范围小的可以自动转换成表数范围大的类型。
  2. 任何基本类型与字符串进行连接运算时,基本类型会自动转换成字符串类型。
System.out.println(3 + 4 + "hello");//7hello
System.out.println("hello" + 3 + 4);//hello34

2、强制类型转换

  1. 将表数范围大的数据类型转换为表数范围小的数据类型就要用()里面写小的数据类型。
  2. 将字符串转换成基本类型,转换使用对应包装类.parseXxx(String s) 的静态方法。
	public static void main(String[] args)
	{
		var iValue = 233;
		// 强制把一个int类型的值转换为byte类型的值
		byte bValue = (byte) iValue;
		// 将输出-23   典型的溢出
         // int是32位,转换成8位的byte,需截断前面24位,保留后面8位,第8位是一个符号位,
         // 此数第8位是1,表明是一个负数,负数以补码的形式存在于内存中,换算成原码得输出结果。
         // 将补码减1得反码,再将反码取反的原码(符号位不变)。
		System.out.println(bValue);
		var dValue = 3.98;
		// 强制把一个double类型的值转换为int
		int tol = (int) dValue;
		// 将输出3   直接截断浮点数的小数部分
		System.out.println(tol);
	}

3、表达式类型自动提升

  1. 所有byte、short、char运算时自动提升到int类型。
  2. 如果运算中有多种类型的,表达式将结果自动提升为最大的类型。
    short sValue = 5;
	// 将会报错   表达式操作数最大类型为int
    sValue = sValue + 1;
	// 将会报错    short类型运算时自动提升到int
    sValue = sValue + (byte)1;
    // 右边表达式中2个操作数都是int,故右边表达式的类型为int
    // 因此,虽然23/3不能除尽,依然得到一个int整数
	int intResult = 23 / 3;

6、直接量

直接量类型:int、long、float、double、boolean、char、String、null。(无byte和short)

    //String直接量赋值
    var s0 = "hello";
    var s1 = "hello";
    var s2 = "he" + "llo";
    System.out.printn(s0 == s1);//true
    System.out.printn(s1 == s2);//true

7、运算符

  1. 赋值表达式的值就是右边被赋的值。

    System.out.print(a = 3)//3
    
  2. 扩展后的赋值运算符(如:+=),运算时类型不会自动提升。

        // 定义一个byte类型的变量
        byte a = 5;
        // 下面语句出错,因为5默认是int类型,a + 5就是int类型。
        // 把int类型赋给byte类型的变量,所以出错
        // a = a + 5;
        // 定义一个byte类型的变量
        byte b = 5;
        // 下面语句不会出现错误
        b += 5;
    
  3. 比较运算符==,在比较引用类型时,只有当两个引用类型具有父子关系才可以比较,只有两个引用指向同一个对象时才会返回true。

位运算符(只能操作整数)

  • &:按位与,同1为1。
  • |:按位或,只要有一位为1,即返回1。
  • ~:按位非,按位取反。
  • ^:按位异或,相同时为0,不同时为1。
  • <<:左移运算符。左移后,右边以0填充。
  • ">>":右移运算符。右移后,左边以符号位填充。
  • ">>>":无符号右移。右移后,左边以0填充。

移位规则:

  1. 都是对其补码进行运算。
  2. 移位运算原操作数不会改变。
  3. 低于int范围类型,总会先自动转为int再移位。
  4. 对于int类型移位,a>>b,当b>32时系统先用b对32取余,得到的结果才是真正的移位。
  5. 对于long类型移位,a>>b,当b>64时系统先用b对64取余,得到的结果才是真正的移位。

技巧:

  • 对于正数,左移相当于乘以2的n次方,右移相当于除以2的n次方。

二、流程控制

  • switch后面的控制表达式只能是byte、short、char、int四种整数类型,枚举类型和java.lang.String类型。(不能是boolean)

  • break,continue只能在循环体的最后一行。

  • Java标签就是一个紧跟着英文冒号(:)的标识符,Java的标签只有放在循环语句外才有作用。

    	public static void main(String[] args)
    	{
    		// 外层循环,outer作为标识符  可以自定义
    		outer:
    		for (var i = 0; i < 5; i++)
    		{
    			// 内层循环
    			for (var j = 0; j < 3; j++)
    			{
    				System.out.println("i的值为:" + i + "  j的值为:" + j);
    				if (j == 1)
    				{
    					// 跳出outer标签所标识的循环。
    					break outer;
                          // 若是continue的话   忽略outer标签所指定的循环中本次循环所剩下语句。
    					// continue outer;
    				}
    			}
    		}
    	}
    

Java合集二

原文:https://www.cnblogs.com/jtStudy/p/14593738.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!