Java 数据类型和运算符(回顾当初)

在这里插入图片描述


第一期视频

Java的第一天

视频地址:https://www.bilibili.com/video/av84407168


注释

编写程序总要写注释,否则写多了可能就不知道这行代码是干什么的,所以要用注释来表明代码的作用,又或者说明某个类的用途以及功能,又或者是某个方法返回值的数据类型以及意义等。总之,注释是一个特别重要的存在,有些同学或者同事刚开始学可能会不在意注释,但是慢慢就会发现,时间久了,代码多了,你可能不知道某一行代码是干什么的,切记,永远不要相信自己的理解能力,随着软件行业的发展,一个项目要有多人开发,如果你不写注释,那么别人读不懂你的代码,大大降低了开发效率!Java中注释有三种:单行注释多行注释文档注释注释中的代码块不会被执行


注释详细介绍

单行注释
单行注释就是注释程序的某一行代码又或者说明某些东西,Java中只需要用 // 放在要注释的内容之前即可

多行注释
多行注释指的是一次性将程序中某一段代码注释又或者多行注释,在Java中使用 /* 开头, */ 结尾即可,中间放要注释的内容即可 ( /* 表示注释开头, */ 表示注释结尾 )

文档注释
文档注释是说明类、方法、成员变量的功能,文档注释以 /** 开始,然后 */ 结尾,中间的内容都是文档注释


注释的用法

public class Main {

    /**
     * 这里是程序的入口
     * 这里就是文档注释
     *
     * @param args
     */
    public static void main(String[] args) {
        System.out.println("Hello World!");

        //System.out.println("这里是单行注释,我不会被执行");

        /*
         这是多行注释,要注释某一段或者多行请用我!
         这是多行注释,要注释某一段或者多行请用我!
         这是多行注释,要注释某一段或者多行请用我!
         */

    }
}



标识符和关键字

Java语言和其它语言一样,可以使用标识符为标识某个变量、对象的名字,提供了关键字实现命名、实现某个方法等,下面来看详细的介绍!


分隔符

Java语言中有些符号表示分隔符,使用时应注意,符号是在英文状态下输入的!

名称 符号
分号 ;
花括号 { }
方括号 [ ]
圆括号 ( )
空格  
圆点 .

分号
Java中分号的作用是分割语句,因此,Java每个语句都必须使用分号来结尾,在Java中,一行可以写多个语句,但是必须用分号来进行分割。

 int number = 100; String sex = "男";//两个语句写成一行,每个语句都要有分号进行分割(一般程序不会这么写)

一般这样写:

int number = 100; 
String sex = "男";

要注意的是,Java语句可以跨行写,但是字符串、变量名不能跨越多行。

花括号
花括号定义的是一个代码块,花括号中间所包含的就是一段代码块,在逻辑上是一个整体,Java中,类的定义必须放在一个代码块里,花括号一般是成双成对出现的,有“{”必然有 “}”,(深思一下,你为什么没有男朋友或者女朋友)

方括号
方括号主要用于数组操作里面,方括号值指的是数组元素的索引

int[] arr = new int[3];
arr[2] = 3;

圆括号
当定义方法时,必须使用圆括号来包含所有的形参数名,调用时候也必须紧跟圆括号来传入实参,圆括号还可以将表达式中某一部分括住,保证其优先运算,又或者可以强转成某一个类型,可能是说到这里,如果你是初学者,你可能会不懂,但是没关系,后面你就会把这些当成一个习惯!


空格
Java中使用空格来分割语句中 不同的部分(英语就是这样,你总不能不用空格写出一个句子吧),Java中的空格可能出现在任何地方,也可能出现一段连续的空格,但是请不要把空格分开某一个程序的方法或者某个变量关键字或者变量名分割,这样程序会报错。Java中合理的使用空格可以提高程序的可读性!


圆点
圆点通常作为类或者对象,又或者内部类之间的分隔符,表示调用某个类或者实例类中的某个方法。


标识符规则

标识符表示给程序中变量、类、方法命名的符号。Java标识符必须以字母、下划线、美元符号开头,后面可以跟数字、字母、下划线、美元符号,而且还可以跟中文、日语等(一般不跟中文、日文这些哈),Java语言支持Unicode6.2.0字符集,因此Java标识符可以使用Unicode6.0.0 所能表示的多种语言的字符。Java语言是区分大小写的,如:abc 和 Abc 是两个不同的标识符。

  • 标识符可以由字母、数字、下划线和美元符号组成,但不能是数字开头。
  • 标识符不能是Java中的关键字和保留字,但是可以包含关键字和保留字。
  • 标识符中不能包含空格。
  • 标识符只能包含美元符号$,不能包含其它符号。

Java关键字

在Java中,关键字都是小写的,如int是java中的关键字,而INT就不是Java中的关键字,下面给出所有关键字

Java中的关键字(48个):
abstract、assert、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile、while

Java中的保留字(2个):
goto、const

Java中的直接量(3个):
true、false、null


数据类型分类

Java是强类型语言,符合一下两个条件即是强类型语:

  1. 所有变量必须先声明,再使用
  2. 指定类型的变量只能接受类型与之匹配的值

强类型语言可以在编译时进行更加严格的语法检查,从而减少编程错误
声明方法如下

type name = value;//这只是一个结构,不是代码

Java支持的类型分为两类:基本类型引用类型

  • 基本类型包括boolean类型和数值类型。数值类型有整型和浮点类型,整型包括byte、short、int、long、char,浮点类型包括float和double。char代表字符型,实际上也是一种整型,相当于一种无符号整型。

  • 引用类型包括类、接口和数组类型,还有一种特殊的null类型,所谓引用类型数据就是对一个对象的引用,对象包括实例和数组两种。实际上引用类型变量就是一个指针,只是Java语言中不再使用指针。空类型(null type)就是null值的类型,这种类型表示空,没有名称,可以转换为任何引用类型。


基本数据类型

整型:
所提到的整型指的是四种类型:

  • byte:一个byte在内存中占用8位,表数范围是-128 (-27^{7}) ~ 127(272^{7}-1)
  • short:一个short在内存中占16位,表数范围是:-32768(-215^{15}) ~ 32767(2152^{15}-1)
  • int:一个int类型在内存中占32位,表数范围是:-2147483648(-231^{31}) ~ 2147483647(2312^{31}-1)
  • long:一个long类型在内存中占64位,表数范围是:(-263^{63}) ~ (2632^{63}-1)

如果直接将一个较小的整数值(符合表数范围内)赋值给一个byte或者short,系统会自动把这个整数值当成byte或者short来处理!如果一个使用巨大的整数值(超出int表数范围)时,Java不会自动把这个整数值当成long类型来处理。如果希望当成long来处理,则在这个数值之后增加一个L或者l作为后缀。但是请使用L,因为l很像1,容易搞混。


字符型:
字符型通常用于表示单个字符,字符型使用单引号( ’ )引用起来,字符型有三种表示方式:

  • 直接通过单个字符来指定字符类型,如:‘A’、'8’等
  • 通过转义字符表示特殊字符型值,例如 ‘\n’、’\t’等
  • 直接使用Unicode值来表示字符型值,格式为 ‘\uxxxx’,xxxx表示16进制的整数。

如果把一个范围在0~65535的int值赋值给char类型变量,系统自动会把这个int类型当成char类型来处理。

浮点型:
Java中浮点类型有两种:float 和 double
Java浮点类型有固定的表数范围和字段长度,字段长度和表数范围与机器无关,float类型,第一位是符号位,接下来8位表示指数,在接下来32位表示尾数;double类型,第一位也是符号位,接下来11位表示指数,再接下来52位表示尾数。

double类型代表的是双精度浮点类型,float是单精度浮点类型,double占8字节、64位,float占4字节、32位。

浮点数有两种表示方法:

  • 十进制数形式:如5.21、3.14、.123等,浮点数必须包含一个小数点,否则会当成int来处理
  • 科学计数法形式:例如 5.21e2 或者 5.21E2 (即5.21 x 102^2

布尔类型:
布尔类型(boolean)用于表示逻辑上的 “真” 或者 “假” ,在Java中,boolean类型只能是 true或者 false


基本类型的转换

Java中,所有的数值类型可以相互转换,如果系统支持把某种类型直接赋值给另一种基本类型,则这种转换方式成为 自动类型转换,反之,则是强制类型转换
在这里插入图片描述

在这里插入图片描述

public class Main {

    /**
     * 自动类型转换
     * 强制类型转换
     *
     * @param args
     */
    public static void main(String[] args) {

        //自动类型转换
        int a = 10;
        float f = a;
        System.out.println(f);//输出10.0

        //强制类型转换
        double d = 12.56;
        int c = (int) d;
        System.out.println(c);//输出12
    }
}

表达式类型的自动提升
如以下运算,表达式的类型将严格保持表达式中的最高等级操作数相同的类型,如果把以下的12行中的double换成int,那么必然会报错!这就是表达式类型的自动提升。

public class Main {

    /**
     * 表达式类型的自动提升
     *
     * @param args
     */
    public static void main(String[] args) {
        byte b = 10;
        int a = 20;
        double d = 12.55;
        double value = a + b + d;
        System.out.println(value);//输出42.55
    }
}


直接量

直接量就是通过源代码直接给出的值,int a = 10,a所分配的初始值是10,这就是一个直接量。

直接量的类型

并不是所有的数据类型都可以指定直接量,能指定直接量的通常有三种,基本类型、字符串类型和null类型。

直接量的赋值

通常指的是把一个直接量赋值给对应类型的变量,就叫做直接量的赋值,如上上段,int a = 10。

String类型的直接量不能赋值给其他类型的变量,null类型的直接量可以直接赋值给任何引用类型的变量,包括String类型。boolean类型的直接量只能赋值给boolean类型的变量,不能赋值给其它任何类型的变量。


运算符

运算符用于表示数据的运算、赋值、比较等操作,Java中运算符分为以下几种:

  • 算数运算符
  • 赋值运算符
  • 比较运算符
  • 逻辑运算符
  • 位运算符
  • 类型相关运算符

算数运算符

运算符名称 运算符
加法运算符 +
减法运算符 -
乘法运算符 *
除法运算符 /
取余(求余)运算符 %
自加运算符 ++
自减运算符 - -
public class Main {

    /**
     * 算数运算符
     *
     * @param args
     */
    public static void main(String[] args) {
        int a = 0;
        a = a + 1;
        a = a - 1;
        a = a * 9;
        a = a / 5;
        a = a % 3;
        a++;
        ++a;
        a--;
        --a;
    }
}


赋值运算符

赋值运算符用于为某一变量指定变量,也就是所使用的 “=” 号。

public class Main {

    /**
     * 赋值运算符
     *
     * @param args
     */
    public static void main(String[] args) {
        int a;
        int b;
        int c;
        a = b = c = 100;

        //或者
        int e = 10;

    }
}


位运算符

运算符名称 符号 法则
按位与 & 当两位同时为1时才返回1
按位或 | 只要有一位为1即返回1
按位非 ~ 单目运算符,将操作数的每个位(包括符号位)全部取反
按位异或 ^ 当两位相同时返回0,不同时返回1
左移运算符 << (下面程序演示)
右移运算符 >> (下面程序演示)
无符号右移运算符 >>> (下面程序演示)

一般情况下,位运算符只能操作整数类型的变量或值。

public class Main {

    /**
     * 位运算符
     *
     * @param args
     */
    public static void main(String[] args) {
        //5的二进制码是00000000000000000000000000000101
        //9的二进制码是00000000000000000000000000001001

		//11为1,00为0,10为0,01为0
		//即00000000000000000000000000000001
        System.out.println(5 & 9);//输出1

		//11为1,00为0,10为1,01为1
		//即00000000000000000000000000001101
		//13的二进制是1101,故为13
        System.out.println(5 | 9);//输出13
		
		//先拿到-5的原码,根据原码获得反码,之后再获取-5的补码,取反后最高位(符号位为0),成为正数
		//-5原码:10000000000000000000000000000101
		//-5反码:11111111111111111111111111111010
		//-5补码:11111111111111111111111111111011
		//再取反后最高位:
		//结果为4:00000000000000000000000000000100
        System.out.println(~-5);//输出4
        
        //5的二进制是101
        //9的二进制是1001
        //补齐32位,多余补0
        //即5: 00000000000000000000000000000101
        //即9: 00000000000000000000000000001001
        //运算法则为:上下对齐,相同为0,不同为1
        //即12:00000000000000000000000000001100
        //12的二进制是1100
        System.out.println(5 ^ 9);//输出12

		//将操作数的二进制码整体左移制定位数,左移后右边空出来的位以0填充。
        System.out.println(5 << 2);//输出20

		//把第一个操作数的二进制码右移指定位数后,左边空出来的位以原来的符号位填充,
		//即如果第一个操作数原来是正数,则左边补0,如果第一个操作数是负数,则左边补1.
        System.out.println(-5 >> 2);//输出-2

		//>>>是无符号右移运算符,把第一个操作数的二进制码右移指定位数后,左边空出来的代码位总是以0补充。
        System.out.println(-5 >>> 2);//输出1073741822
    }
}


扩展后的赋值运算符

赋值运算符可以和算术运算符,位移运算符结合使用,扩展成更为强大的运算符。扩展后的赋值运算:

符号 使用 对应
+= x += y x = x + y
-+ x -= y x = x - y
*= x *= y x = x * y
/= x /= y x = x / y
%= x %= y x = x % y
&= x &= y x = x & y
|= x |= y x = x | y
^= x ^= y x = x ^ y
<<= x <<= y x = x << y
>>= x >>= y x = x >> y
>>>= x >>>= y x = x >>> y

比较运算符

比较运算符用于比较两个变量或者常量的大小,比较结果是boolean类型的值

  • > : 大于,左值是否大于右值,左大返回true,反之返回false,如:5 > 3,返回true,3 > 5,返回false。
  • < : 小于,左值是否小于右值,左小返回true,反之返回false,如:3 < 5,返回true,5 < 3,返回false。
  • >= :大于等于,左值是否大于等于右值,左大于等于右,返回true,反之false,如:
    5 >= 5,返回 true
    6 >= 5,返回 true
    4 >= 5,返回 false
  • <= :小于等于,左值是否小于等于右值,左小于等于右,返回true,反之false,如:
    5 <= 5,返回 true
    6 <= 5,返回 false
    4 <= 5,返回 true
  • ==:等于,左边的值是否等于右边的值:如 6 == 6,返回true, 6 == 7,返回false。也可以用于布尔类型的值比较,如:true == true或者true == false,第一个返回true,第二个返回false。如果两个数是引用类型,只有当两个引用变量的类型具有父子关系时才可以比较,只要两个引用指向的 是同一个对象 就会返回true。还可以用于浮点类型于int类型比较,5.0 == 5,返回true。
  • !=:不等于,左值是否不等于右值,如:3 != 3,返回false,6 != 7,返回true,如果两个数是引用类型,只有当两个引用变量的类型具有父子关系时才可以比较,只要两个引用指向的不是同一个对象就会返回true。

逻辑运算符

逻辑运算符用于操作两个布尔类型的变量或者常量

符号 名称 使用
&& 前后两个操作数均为true才会返回true,否则为false
& 不短路与 与&&作用相同,但不短路
|| 前后两个操作数只要有一个是true,或者都是true,才会返回true,前后两个操作数为false才会返回false
| 不短路或 与||作用相同,但不短路
! 只需要一个操作数,如果操作数为true,则返回false,如果是false,则返回true
^ 异或 当两个操作数不同时,才会返回true,如果两个操作数相同,则返回false

三目运算符

三目运算符指的是 ( ? : )

可以这样使用

String str = 5 > 3 ? "5是大于3的" : "5是小于3的";

其实可以用if…else…作为理解


运算符的结合性和优先级

数学运算时,都是自左向右,Java也是,(除了 单目运算符、赋值运算符和三目运算符,他们是从右向左),乘法和加法是两个可结合的运算,也就是说,这两个运算符足左右两边操作数互相调换位置,是不会影响结果的!
运算符有不同的优先级,就比如说数学中,先算乘法,后算加法,同理,Java也是这样,下面列出优先级表格:(自顶向下,顶部优先级最高,底部优先级最低)

运算符名称 运算符
分隔符 . [] () {} , ;
单目运算符 ++ - - ~ !
强制类型转换运算符 (TYPE)
乘法/除法/求余 * / %
加法/减法 + -
位移运算符 << >> >>>
关系运算符 < <= > >= instanceof
等价运算符 == !=
按位与 &
按位异或 ^
按位或 |
条件与 &&
条件或 ||
三目运算符 ?:
赋值 = += -= *= /= &= |= ^= %= <<= >>= >>>=

完结

1、创建一个类,写三种注释
2、使用8种基本数据类型声明多个变量,并赋值,熟悉赋值规则和表示方式
3、数值之间进行类型转换,低位到高位转换,高位向低位强制转换
4、使用数学运算符、逻辑运算符,综合使用,然后数值通过比较运算符逐个比较输出


下一章

Java 流程控制 https://blog.csdn.net/qq_40881680/article/details/103639527

发布了105 篇原创文章 · 获赞 1238 · 访问量 82万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 猿与汪的秘密 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览

应支付9.90元
点击重新获取
扫码支付

支付成功即可阅读