Java基础——常量、进制、变量、数据类型及运算符

今天呢阿Q就带大家了解一下java的常量、变量、数据类型以及运算符的相关知识。

常量

(1)在程序的运行过程中,其值是不可以发生改变的量。
(2)常量的分类:字面值常量,自定义常量(将在后边的讲解中给出),字面值常量又分为

​ 整数常量:12,-23

​ 实数常量:12.5,-65.43

​ 字符常量:'a','A','0'

​ 字符串常量:"hello"

​ 布尔常量:true,false

​ 空常量:null
(3)常量可以直接被输出。

进制

(1)是一种进位的方式。X进制,表示逢x进1。
(2)java中整数常量的表示

  • 二进制 由0,1组成。以0b开头。JDK7以后的新特性。

  • 八进制 由0-7组成。以0开头。

  • 十进制 由0-9组成。默认就是十进制。

  • 十六进制 由0-9,A-F(不区分大小写)组成,以0x开头。

(3)计算机存储数据时用高低电平(高低位)来存储的 也就是 二进制的 1 和 0,1个就二进制数据被称为位 (bit)
​ 1byte = 8 bit;
​ 1Kb = 1024byte;
​ 1Mb = 1024Kb;
​ 1Gb = 1024Mb;
​ 1Tb = 1024Gb;
(4)进制转换:进制转换详情见链接https://jingyan.baidu.com/article/495ba84109665338b30ede98.html,掌握方法即可,因为电脑的计算器都带有进制转换功能,此处不再赘述。

变量

(1)程序的运行过程中,在指定范围内发生改变的量。
(2)格式:
​ 数据类型 变量名 = 初始化值;

​ 变形格式:
​ 数据类型 变量名;
​ 变量名 = 初始化值;

​ 举例:
​ 方式1: byte b = 10;

​ 方式2: byte b;
​ b = 10;
(3)注意事项
​ A:在一对{}内,是不能重复定义变量的。
​ B:赋值的时候,尽量不要超出范围。
​ C:定义长整数型,必须加后缀:l或者L
​ D:定义单精度类型的时候,必须加后缀:f或者F
​ E:变量要先初始化再使用(在使用之前初始化即可)

(4)代码举例:

class VariableDemo {
​   public static void main(String[] args){
​       //定义字节变量
​       byte b = 12;
​       System.out.println(b);

​       //定义短整型变量
​       short s = 1234;
​       System.out.println(s);

​       //定义整数变量
​       int i = 12345;
​       System.out.println(i);

​       //定义长整型变量
​       long l = 12345678912345L;
​       System.out.println(l);//这是1

​       //定义单精度类型(7-8位的有效数字)
​       float f = 12.5F;
​       System.out.println(f);

​       //定义双精度类型(15-16位的有效数字)
​       double d = 12.5;
​       System.out.println(d);

​       //定义字符类型
​       char c = 'a';
​       //重新赋值,Java中的字符采用的编码是Unicode编码。占用2个字节。
​       c = '中';
​       System.out.println(c);

​       //定义布尔类型
​       boolean flag = true;
​       System.out.println(flag);
​   }
​}

数据类型

(1)分类:

​ 基本类型:4类8种。
​ 引用类型:类,接口,数组
(2)基本类型
​ 整型:
​ byte 1字节
​ short 2字节
​ int 4字节
​ long 8字节
​ 浮点型:
​ float 4字节
​ double 8字节
​ 字符型:
​ char 2字节
​ 布尔型:
​ boolean 不明确。可以认为是1个字节。

注意:

​ 整数默认是int类型。long类型需要加L或者l后缀。
​ 浮点数默认是double类型。float类型需要加F或者f后缀。

(3)类型转换
​ 在运算的过程中,一般要求类型一致。如果遇到不一致的情况,就会有类型转换问题
​ 1:boolean类型不参与转换。
​ 2:隐式转换(从小到大)
​ byte,short,char -- int -- long -- float -- double
​ 注意:long是8个字节,float是4个字节。
​ long是整数,float是浮点数,整数和浮点数的存储规则不一样。
​ long的范围是小于float的。
​ 2^63 10^38 > (23)38 > 2^114
​ 3:强制转换(从大到小)
​ 如果你明确知道数据是可以表示,就可以用强制类型转换。
​ 格式:(转换后数据类型)变量或者值
​ 一般情况下,根本不推荐使用强制类型转换。

​ 4:代码

class VariableDemo2{
​   public static void main(String[] args){
​       //定义两个类型不一致变量
​       int x = 10;
​       byte b = 20;
​       //把两个变量进行加法运算
​       byte b2 = x + b;
​       System.out.println(b2);

​       //定义两个类型一致的变量
​       int x = 10;
​       int y = 20;
​       int z = x + y;
​       System.out.println(z);

​       //隐式转换
​       byte a = 10;
​       int b = a;
​       System.out.println(b);
​               
​       //隐式转换
​       float f = 12.5F;
​       double d = a+b+f;
​       System.out.println(d);

​       //强制类型转换
​       int i = 10;
​       byte b2 = (byte)i;
​       System.out.println(b2);
    }
​}

(4)类型转换的原理(理解即可)
​ 比如把int类型强制转成了byte类型 就是把32位的int的后8位截取出来 再换算成人类能看得懂的源码

(5)字符类型对应的ASCII码表
​ 数字字符和英文字符,包括中文字符,他们都是我们用于交流的数据,而计算机中的数据
​ 底层是二进制的,所以,它不可能直接存储我们使用的这些数据。
​ 必须想办法,把他们变成我们能够存储的数据在计算机中存储。
​ 这样的话,就出了编码表。
​ 编码表:
​ 就是字符及其对应的数值组成的一张表。

​ 最常见的编码表:ASCII码表。(详见resource里面)

class VariableDemo5 
    {
        public static void main(String[] args) 
        {
            System.out.println('a');
            System.out.println('a'+1);//98-1=97 --  'a'
            System.out.println('a'+3);//100
            System.out.println('A'+1);//66-1=65 --  'A'
            System.out.println('0'+1);//49-1=48 --  '0'
        }
    }

运算符

(1)就是把常量和变量连接的符号,一般参与运算使用。
(2)分类:
​ 算术运算符
​ 赋值运算符
​ 关系运算符
​ 逻辑运算符
​ 位运算符
​ 三元运算符
(3)算术运算符
​ +,-,*,/,%,++,--

​ +:正号,加法,字符串连接符。
​ System.out.println("5+5=" + 5 + 5); //5+5=55
​ System.out.println(5 + 5 + "=5+5"); //10=5+5

​ /:整数相除,结果只能是整数。
​ 如果你想要小数,那么参与运算的数据必须有一个是浮点数类型。

​ %:取余,即整除之后的余数。

​ ++/--:
​ i++ :++放后面 就是说 i++ 这个整体是1,也就是说如果把 i++ 赋给一个 int z 那么z还是1
​ 而这会儿i已经是2了
​ int i = 1;
​ System.out.println(i++);// 1
​ System.out.println(i);// 2
​ ++i:++放后面 就是说 ++i 这个整体是2,也就是说如果把 ++i 赋给一个 int z 那么z还是2
​ 这会儿i是2
​ int j = 1;
​ System.out.println(++j);// 2
​ System.out.println(j);// 2

(4)赋值运算符
​ =,+=,-=,*=,/=,%=

​ int a = 10;
​ 把10赋值给int类型的变量a。

​ a += 20 即为 a = a + 20

​ 注意事项:
​ a = a + 20;
​ a += 20;
​ 结果是等价的,理解不是等价的。

​ 因为+=这种运算符,内含了强制类型转换功能。
​ 比如:
​ short s = 2;

​ s+=3;
​ 等价于
​ s = (short)(s + 3)
(5)关系运算符
​ ==,!=,>,>=,<,<=

​ 特点:关系运算符的结果都是boolean类型。
​ 请千万注意:== 不要写成 =

(6)逻辑运算符
​ &,|,!,^,&&,||

​ &:有false则false
​ |:有true则true
​ !:true变false,false变true
​ ^:相同false,不同true

​ &&:有false则false
​ ||:有true则true

​ &&和&的区别是:如果左边有false了,右边将不再执行。
​ ||和|的区别是:如果左边有true了,右边将不再执行。

​ &&和|| 验证举例:

        int a = 10;
        int b = 20;
        //System.out.println((a++ > 10) & (b-- > 10));//a=11,b=19
        System.out.println((a++ > 10) && (b-- > 10)); //a=11,b=20
        System.out.println(a);
        System.out.println(b);

(7)位运算符
​ 位运算符:是针对二进制数据的运算。
​ & 按位与
​ | 按位或
​ ^ 按位异或
​ ~ 按位取反

    <<  左移  左边的高位舍弃,右边空出的部分补齐0。
    >>  右移  如果最高位是0,左边被移空的位就填入0;如果最高位是1,左边被移空的位就填入1
    >>> 无符号右移 无论最高位是1还是0,左边被移空的高位都填入0
注意:向左移动或者向右移动,其实就是把数据增大或者缩小2的指定次幂。

(8)条件运算符也叫三目运算符
​ 格式:
​ 条件表达式?表达式1:表达式2

​ 执行流程:
​ 根据条件表达式返回的是true还是false,决定结果是什么。
​ 如果是true,就把表达式1作为结果。
​ 如果是false,就把表达式2作为结果。

好了今天就先说到这了,明天继续。想了解更多学习知识,请关注微信公众号“阿Q说”,获取更多学习资料吧!你也可以后台留言说出你的疑惑,阿Q将会在后期的文章中为你解答。每天学习一点点,每天进步一点点。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容