章二、JavaSE基础语法(2)—— 变量、数据类型、运算符

一、变量


●  概念

        变量:程序运行中可以改变的量,其本质是一个存储空间

例:

int a = 10;
a = 5;

●  本质

        变量其实是内存中的一小块区域,使用变量名来访问这块区域,因此,每一个变量使用前必

须要先申请(声明),然后必须进行赋值(填充内容)  才能使用。

●  访问(引用)

        ●  变量是通过使用  变量名  来访问这块区域的

●  声明方法

    数据类型    变量名1,变量名2   

二、数据类型


        按数据类型分为两类:基本数据类型  和  引用数据类型

1.基本数据类型

(1)数值型

        a.整数类型( byte , short , int , long )

        注:Java语言中,整型常量默认int 型,声明 long 型常量时,数字结尾应加 'l' 'L'

例如: 

byte a = 127;// 1个字节 可以表示-128 ~ 127
short b = 32767;// 2个字节 可以表示-32768~32767
int c = 1000000000;//4个字节
long d= 1000000000000L;//整型默认为int,要用long必须后面加L
        b.浮点类型( float , double )
                ● 十进制数形式,例如: 3.14 314.0
                ● 科学记数法形式,如 3.14e2 3.14E2

        注:浮点数通常默认为 double 类型的,要定义 float 类型的变量,赋值时需要结尾添加 'f''F' 作为后缀。

例如:

float e = 123.022f;
double f = 123414.43244;

        注:一般很少用浮点数,因为浮点数转化为二进制时不能精准转化。

例:

System.out.println(1.0-0.7);//0.30000000000000004

        如果需要使用精确的小数计算,要用到 BigDecimal 类型

BigDecimal bigDecimal1 = new BigDecimal("1.0");
BigDecimal bigDecimal2 = new BigDecimal("0.7");
System.out.println(bigDecimal1.subtract(bigDecimal2));// 0.3

(2)字符型( char )

        a.字符表示

        char 只能表示一个字符,如果想表示一个字符串,应该用 String 来声明;

例如:

char g = 'C';
String h = "abcdef";
        b.字符运算      

  char 运算:char 类型运算是 字母在 ASCII 码表中对应的值

        char h = 'A';  //65
        System.out.println(h);  // A
        System.out.println(0+h);  // 0 + 65 = 65
        *Unicode 编码

        一种编码,将世界上所有的符号都纳入其中。这个编号范围从 0x000000 0x10FFFF (十六进制),有 110 多万,每个字符都有一个唯一的 Unicode 编号,这个编号一般写成 16 进制在前加上 U+。

        例:“ 马 ” 的 Unicode 是 U+9A6C可以换算为整数。

Java 底层采用 Unicode 编码来存储字符.

(3)布尔型( boolean )

        boolean 类型适于逻辑运算,一般用于程序流程控制 。
例如:

注:Java中不能用 0 或 非0 来替代 false 或 true,这点与 C语言 不一样

        //不能通过赋 0 或 非0
        int k = 0;
        // if(k);  //报错

*基本数据类型转换

规则:将取值范围小(或容量小)的类型自动提升为取值范围大(或容量大)的类型。

当容量大的数据类型转化为容量小的时,要加上强制转换符,但可能造成精度降低数据溢出

当有多种类型的数据混合运算时,系统自动将所有数据转换成大容量的那一种,然后再进行计算。

例如:

        /*大容量转化为小容量*/
        //1、溢出的的删去
        int x= 256;  // 0001 0000 0000
        byte y = (byte)x; // 0000 0000
        System.out.println(y);//0
        //2、精度降低
        float f = 3.14f;  // 3.14
        int uf = (int)f;  // 3
        System.out.println(uf);  // 3

2.引用数据类型

(1)类( class )

(2)接口( interface )

(3)数组( [  ] )

三、运算符


1、算术运算符

运算符运算范例结果
+正号;加号+33
-负号;减号b = 4;-b-4
*3*412
/12/34
%取模15%43
++(前)自增(前):先运算后取值a = 2;b = ++aa = 3;b = 3
(后)++自增(后):先取值后运算a = 2;b = a++a = 3;b = 2
--(前)自减(前):同理a = 3;b = --aa = 2;b = 2
(后)--自减(后):同理a = 3;b = a--a = 2;b = 3
+字符串相加"he"+"llo""hello"

2、比较运算符

运算符运算范例结果
==相等于4 == 3false
!=不等于4 != 3true
>大于4 > 3true
<小于4 < 3false
>=大于等于4 >= 3true
<=小于等于4 <= 3false
instanceof检查是否是类的对象"Hello" instanceof Stringtrue

3、逻辑运算符

        & --- 逻辑与            | --- 逻辑或         ! --- 逻辑非       

        && --- 短路与        || --- 短路或        ^ --- 逻辑异或

aba & ba | b!aa ^ba && ba || b
truetruetruetruefalsefalsetruetrue
truefalsefalsetruefalsetruefalsetrue
falsetruefalsetruetruetruefalsetrue
falsefalsefalsefalsetruefalsefalsefalse

注:

“&”和“&&”的区别:

        单&时,左边无论真假,右边表达式都进行运算;

        双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算,

|”和“||”的区别同理。

建议:在开发过程中,建议使用 && 和 || 

4、赋值运算符

符号: = 

拓展运算:

运算符用法等效表达
+=a += ba = a + b
-=a -= ba = a - b
*=a *= ba = a * b
/=a /= ba = a / b
%=a %= ba = a % b

注:

        short a = 3;

        a = a + 2;     会报错,原因是 a 是 short 类型,而右式是 int 类型;

                            不能把 int 型赋给 short 型。

        a += 2;      有隐式类型转换,不会报错

5、条件运算符

语法:

        (条件表达式) ? 表达式1 : 表达式2;

当条件表达式结果为 true 执行表达式1;当条件表达式结果为为 false 执行表达式2

6、位运算符

      日常开发中位运算使用相对较少,但是巧妙的使用位运算可以大量减少运行开销, 优化算法

位运算符名称用法
<<左移空位补0,被移除的高位丢弃,空缺位补0。
>>右移

被移位的二进制最高位是0,右移后,空缺位补O;

最高位是1,空缺位补1。

>>>右移被移位二进制最高位无论是O或者是1,空缺位都用O补。
&按位与二进制位进行&运算,只有1&1时结果是1,否则是0
|按位或二进制位进行|运算,只有 0 │ 0 时结果是0,否则是1;
^按位异或

相同二进制位进行^运算,结果是 0; 1^1=0,0^0=0

不相同二进制位^运算结果是 1。1^0=1,0个1=1

~按位取反

正数取反,各二进制码按补码各位取反

负数取反,各二进制码按补码各位取反

四、Java 控制台输入

Java 提供 Scanner 类来实现从控制台向程序输入信息的功能;

具体步骤:

        1.导入使用的类:import java.utl.Scanner;

        2.创建Scanner类型的对象:Scanner scan = new Scanner(System.in);

        3.调用Scanner类的相关方法,来获取指定类型的变量

例如:

package day2;

import java.util.Scanner;
/**
 * 控制台输入
 */
public class Demo8 {
    public static void main(String[] args) {
        //创建一个输入功能的对象
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入姓名:");
        String name = scanner.next();//读入姓名

        System.out.println("请输入年龄:");
        String age = scanner.next();//读入年龄

        System.out.println("年龄为:"+name+",年龄为:"+age);

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

三木几

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

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

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

打赏作者

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

抵扣说明:

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

余额充值