【Java成王之路】第二篇:Java SE(基本数据类型和运算符)

目录

兄弟们,接着上一篇继续,

一、数据类型与运算符

1. 变量和类型

1.8 布尔类型变量(boolean,没有明确规定大小)

1.9 字符串类型变量(String)

字符串的 + 操作, 表示字符串拼接

转义字符用法

1.10 变量的作用域 

 1.11 变量的命名规则

1.12 常量

1.12 理解类型转换 

1.14 int 和 String 之间的相互转换 

二. 运算符

2.1 算术运算符 

%(取余、求模、取模)

 增量赋值运算符 +=   -=   *=   /=   %=

自增/自减运算符 ++ -- 

2.2 关系运算符

2.3 逻辑运算符(重点) 

2.4 位运算符 

2.5 移位运算 

 2.6 条件运算符

 总结:


 

兄弟们,接着上一篇继续,

一、数据类型与运算符

1. 变量和类型

1.8 布尔类型变量(boolean,没有明确规定大小)

基本语法格式:

boolean 变量名 = 初始值;

代码如下: 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

打印结果:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

在Java类型当中:boolean只有两个取值,要么是ture 要么是false,不能有其他的值 

注意事项:

1. boolean 类型的变量只有两种取值, true 表示真, false 表示假.

2. Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法.

3. boolean 类型有些 JVM 的实现是占 1 个字节, 有些是占 1 个比特位, 这个没有明确规定. 

1.9 字符串类型变量(String)

把一些字符放到一起就构成了字符串。

基本语法格式:

String 变量名 = "初始值";

 代码如下: 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

注意事项:

1. Java 使用 双引号 + 若干字符 的方式表示字符串字面值.

2. 和上面的类型不同, String 不是基本类型, 而是引用类型(后面重点解释). 

 Java数据类型分为两种:

一,基本数据类型,

基本数据类型又分为:1,整数(byte、short、int、long)2,浮点数(float、double)3,字符(char)4,布尔类型(boolean)

二,引用类型:

引用类型又分为:1,String,2,数组,3,类,4,接口,5,枚举.....(引用类型就是看变量里面存储的是不是地址)

字符串的 + 操作, 表示字符串拼接

public class TestDemo {
    public static void main(String[] args) {
        String str = "hello";
        System.out.println(str);

        //注意问题
        System.out.println("hello"+"world");//打印结果:helloworld,+代表的是拼接
        System.out.println("hello"+10+20);//打印结果:hello1020,其他数据类型和字符串使用+拼接结果就是一个字符串
        System.out.println(10+20+"hello");//打印结果:30hello,因为先完成了数字相加,在于字符串完成拼接
        System.out.println("hello"+(10+20));//打印结果:hello30
        System.out.println(10+""+20+"hello");//打印结果:1020hello
    }
}

打印结果:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

打印结果:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

转义字符用法

转义字符有很多, 其中几个比较常见的如下:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

打印结果:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

1.10 变量的作用域 

也就是该变量能生效的范围, 一般是变量定义所在的代码块(大括号)

变量分为局部变量和成员变量。 

成员变量又分为普通成员变量和静态成员变量(定义在类的内部,方法的外部。)(到类和对象的时候细讲)

局部变量作用域 :

    public static void main2(String[] args) {
        {
            int a = 10;//a是局部变量,它的作用域就是包含这个变量的花括号当中
        }
        System.out.println(a);//这样也不行,在花括号里面我们才能知道a是谁,出了花括号没法知道a是谁,所也没办法打印

    }


    public static void main3(String[] args) {
        System.out.println(a);//打印打印不了a的结果

    }
}

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

找作用域的时候,找花括号就可以了

在Java当中没有所谓的全局变量的概念 

 1.11 变量的命名规则

硬性指标:

1. 一个变量名只能包含数字, 字母, 下划线

2. 数字不能开头.

3. 变量名是大小写敏感的. 即 num 和 Num 是两个不同的变量.

注意: 虽然语法上也允许使用中文/美元符($)命名变量, 但是 强烈 不推荐这样做.

 软性指标:

1. 变量命名要具有描述性, 见名知意.

2. 变量名不宜使用拼音(但是不绝对).

3. 变量名的词性推荐使用名词.

4. 变量命名推荐 小驼峰命名法, 当一个变量名由多个单词构成的时候, 除了第一个单词之外, 其他单词首字母都大 写

小驼峰命名示例:

int maxValue = 100;

String studentName = "张三"; 

1.12 常量

常量分为两种:

1.字面值常量: 

10 // int 字面值常量(十进制)

010 // int 字面值常量(八进制) 由数字 0 开头. 010 也就是十进制的 8

0x10 // int 字面值常量(十六进制) 由数字 0x 开头. 0x10 也就是十进制的 16

10L // long 字面值常量. 也可以写作 10l (小写的L)

1.0 // double 字面值常量. 也可以写作 1.0d 或者 1.0D

1.5e2 // double 字面值常量. 科学计数法表示. 相当于 1.5 * 10^2

1.0f // float 字面值常量, 也可以写作 1.0F

true // boolen 字面值常量, 同样的还有 false

'a' // char 字面值常量, 单引号中只能有一个字符

"abc" // String 字面值常量, 双引号中可以有多个字符.

2.final 关键字修饰的常量 :

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

A习惯大写 

但如果写法是下面这样:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

编译就会报错,提示 无法为最终变量a分配值

常量不能在程序运行过程中发生修改. 

变量:程序运行的时候,可以改变的量,在程序运行的时候才能知道变量的值是多少

常量:在程序的运行中不可以改变的量 ,在程序编译的时候就已经确定值是多少了

1.12 理解类型转换 

Java 作为一个强类型编程语言, 当不同类型之间的变量相互赋值的时候, 会有教严格的校验.

    public static void main(String[] args) {
        int s = 10;
        long b = s;//四个字节的变量赋给八个字节的变量不会有问题
        System.out.println(s);

        long l = 12;
        //八个字节的变量无法存放在四个字节的变量中,
        int c = l;//为什么一个int类型的变量存不下一个12?因为程序在编译的时候,l是变量,并不清楚值是多少
        // 只有在运行的时候才能知道是12,所以编译器就直接报错了
        //看例子
        long n = 1111111111111121112l;
        int a = n;//如果n里面是放的这样的一个值,int是肯定存放不下的,所以会报错

    }

 结论: 不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型, 反之则不行.

如果非要把long类型的值放到int类型中,只能强制类型转换:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

int 和 boolean 相互赋值 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

 int 和 boolean 是毫不相干的两种类型, 不能相互赋值. 

 int字面值常量 给 byte 赋值

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

 byte 表示的数据范围是 -128 -> +127, 128 已经超过范围, 而 127 还在范围之内

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16 正确写法:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

 类型转换小结

1. 不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型.

2. 如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢失.

3. 将一个字面值常量进行赋值的时候, Java 会自动针对数字范围进行检查.

类型提升小结:

1. 不同类型的数据混合运算, 范围小的会提升成范围大的.

2. 对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算. 

1.14 int 和 String 之间的相互转换 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

 String也是一个类,valueOf是它的一个方法,相当于这个类的一个功能,把参数传过去这个方法就会把参数转换成字符串反馈。

把String转换成int:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

 基本类型对应的类类型就叫做包装类,Integer是int对应的包装类,把基本的int类型变成一个类了,09dcaeeefc1945f193646af1a1470547.png类里面有方法,一个类里面可能有若干的方法,相当于把基本数据类型变成了包装类类类型,在类里面可以提供方法供我们使用。这就是包装类的优点,它能够做到我们简单类型做不到的,它具备了更多更丰富的功能供我们来操作一些数据改变一些数据。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16这八种基本数据类型都有包装类,有俩种比较特殊:int->对应的包装类Integer,char->Charactr,其余的都是首字母大写。

二. 运算符

2.1 算术运算符 

基本四则运算符 +  -  *  /  %

规则比较简单, 值得注意的是除法:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

0 不能作为除数                 int / int 结果还是 int

%(取余、求模、取模)

%   就是去余数

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16 % 表示取余, 不仅仅可以对 int 求模, 也能对 double 来求模 

 增量赋值运算符 +=   -=   *=   /=   %=

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

自增/自减运算符 ++ -- 

跟C语言是完全一样的

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16 --和++是一样的 

2.2 关系运算符

使用关系运算符其结果就是一个布尔值

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

2.3 逻辑运算符(重点) 

逻辑运算符主要有三个:  &&   ||   !

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

打印结果

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

2.4 位运算符 

位运算符主要有四个:   &   |   ~   ^

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

2.5 移位运算 

移位运算符有三个: <<   >>  >>> 都是按照二进制位来运算

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16 注意:

1. 左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.

2. 右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.

3. 由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替.

4. 移动负数位或者移位位数过大都没有意义

 2.6 条件运算符

条件运算符只有一个: 表达式1 ? 表达式2 : 表达式3(都是布尔表达式)

表达式1为真,结果就是表达式2。表达式1为假,结果就是表达式3

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

 总结:

上面就是今天要讲的内容,简简单单给大家介绍了Java的一些基础知识,大家有疑问的话可以随时问我或者指出来,我都会虚心学习改正,也希望大家能更快更早的掌握到自己想要的知识,我会一直坚持在前线!!!!!后续不会停更......让我们共同成长

 

 

 

  • 38
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 29
    评论
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

K稳重

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值