java基础 -- 第02章:变量数据类型运算符[云图智联]

    技术2022-07-13  92

    免费学习视频欢迎关注云图智联:https://e.yuntuzhilian.com/

    1.变量和数据类型

    1.1 变量

    1.1.1   类似于人类用大脑存储记忆,计算机用内存来存储数据。 1.2.1   不同的数据被存于不同的内存空间中,我们可以通过内存地址找到这块空间。但内存地址(一串无规律的数字)难于记忆,所以为了方便找到它,我们可以给这块空间起一个别名(好比通过QQ号可以找到一个人,但是难以记忆,但是通过昵称去找就方便多了)。 1.2.3   变量就是一个数据存储空间(或者说容器)的表示。这块空间的别名就是变量名,空间中存入的数据就是变量的值。数据有多种类型,同理,变量也有多种类型。对应关系如下:

    1.2 数据类型

    1.2.1   java的数据类型可以分为两大类:基本(或内置)数据类型和引用数据类型。 1.2.2   基本数据类型又分为8种:6种数字类型(4个整数型,2个浮点型),1种字符类型,1种布尔型。 如下图所示: 1.2.3   现阶段我们常用的数据类型主要有:int(整型) double(浮点型) char(字符型) boolean(布尔型) string(字符串型,注意:它属于引用数据类型)

    1.3 变量的声明和调用

    1.3.1   声明:数据类型 变量名; 如:int a; double d; String str; 1.3.2   赋值:变量名=值; 如:a=10; d=1.0; str="云图智联"; 1.3.3   可以将上面两步二合一:数据类型 变量名=值; 如:int i=1; char c='男'; 1.3.4   还可以在一条语句中同时声明多个变量:int a,b,c; String x,y,z; 注意:同时声明的多个变量的数据类型当然也相同; 1.3.5   还可以在一条语句中同时声明并赋值多个变量:int a=1,b=2,c=3; String x="北京",y="云图智联",c="教育集团"; 1.3.6   常量:固定的或不愿被改变的值可以写成常量,用final修饰。如:一个人的血型、身份证号;圆周率、声速、光速。   注意:1.常量的每个字母全大写 2.一般在声明常量的同时就给它赋值。如:

    final double PAI=3.1415; //声明一个PAI(圆周率)常量并赋值 final String ID="410321200010010123"; //声明一个ID(身份证号)常量并赋值

    1.4 变量的命名规则:字下美人数骆驼

    1.4.1   "字下美人数":变量名分为首字母和其后字母两部分;首字母可以由“字下美人”组成,其后字母可以由“字下美人数”组成。 1.4.2   "骆驼":变量名的第一个单词的首字母小写,其后每一个单词的首字母都大写,如果用一条上划线来表示这些字母的高低起伏,它刚好像一座驼峰一样:即驼峰命名法。

    2. 运算符

    2.1 赋值运算符:=

      在java中,“=”类似于一个动词,表示按从右到左的顺序“存储”数据这个“动作”; 如:int a=10; 意为将数据10存入一个int类型的变量a中。

    2.2 算术运算符:+ - * / %

    2.2.1   + - * :加 减 乘 2.2.2   /: 取商 如:1024/100=10; 2.2.3   %:取余 如:10240=24;

    2.3 数据类型转换

    2.3.1   自动类型转换:    1. 规则1:如果一个操作数为double类型,则整个表达式可提升为double类型(一人得道、鸡犬升天); 如: int a=10; double d=20.0; 则(a+b)的结果应为30.0(double类型)    2. 规则2:满足自动类型转换的条件(两种类型要兼容、目标类型大于源类型(“=”左边大于右边)); 2.3.2   强制类型转换:    1. 语法:(数据类型)表达式;如:(int)(3.0+4.2)的结果应为7;    2. 注意:两种类型要兼容、可能会损失精度;

    2.4 关系运算符:

    2.4.1   专门用来作比较运算。(注意:“比较”也是一种运算,结果有点特殊而已。比如:10>100的运算结果为假,“篮球的体积>乒乓球的体积”的运算结果为真); 2.4.2   常用的关系运算符有:>(大于)  <(小于)  >=(大于等于)   <=(小于等于)  ==(等于)  !=(不等于) 2.4.3   比较运算的结果用boolean类型表示; 2.4.4   除了上文讲到的运算符之外,java中还有其它几种运算符,如:逻辑运算符(将会在下一章学习)、位运算符、条件运算符、instanceof 运算符等;

    2.5 boolean类型:有且只有两个值:true(真)和false(假,默认值);

    2.6 运算符的优先级:()>算术>关系>逻辑

    3.补充

    3.1 用扫描仪对象获取数据的方法:

    3.1.1   导包:import java.util.Scanner; 3.1.2   创建对象:Scanner scan/input=new Scanner(System.in); 3.1.3   获取数据:    1. scan.next(); ->获取字符串数据;    2. scan.nextInt(); ->获取整型数据;    3. scan.nextDouble(); ->获取浮点型数据;

    3.2 关于几种基本数据类型:

    3.2.1   byte:共28个整数,最小值是-128(-2^7);最大值是127(2^7-1);默认值是 0; 3.2.2   short:共216个整数,最小值是-32768(-2^15);最大值是32767(2^15 - 1);默认值是 0; 3.2.3   int:共232个整数,最小值是-2,147,483,648(-2^31);最大值是2,147,483,647(2^31 - 1);默认值是 0;且一般地整型变量默认为 int类型 3.2.4   long:共264个整数,最小值是-9,223,372,036,854,775,808(-2^63);最大值是 9,223,372,036,854,775,807(2^63 -1);默认值是0L;注意:"L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,所以最好大写。 3.2.5   float:单精度浮点,内存分配4个字节,占32位;如:float x=123.456f,y=2e20f;注意float型定义的数据末尾必须有"f"或"F"; 3.2.6   double:双精度浮点型,内存分配8个字节,占64位;如:double x=1234567.98,y=8980.09d; 末尾可以有"d"或"D",也可以不写; 3.2.7   char:可以储存任何字符,是一个单一的16位Unicode字符;最小值是 \u0000(即0);最大值是 \uffff(即65,535);    赋值方式有:char a = 'a'; //任意单个字符,加单引号。 char a = '中';//任意单个中文字,加单引号。 char a = 111;//整数:0~65535。

    3.3 复合运算符:+= -= *= /= ++ --

    3.3.1   += 说明:a+=b; 等价于 a=a+b; 3.3.2   ++ 说明:a++; 等价于 a=a+1; 3.3.3   int num=a++ 说明:先把a的值赋给num,a再自增1; 3.3.4   int num=++a 说明:a先自增1,再把自增后的a的值赋给num; 3.3.5   其它几种运算符,同理。

    3.4 交换变量

    3.4.1   问题:小明的左右手中分别拿有两张纸牌,分别是黑桃10和红桃8,现要求交换手中的纸牌。请编程模拟实现这一过程。 3.4.2   思路: (1)交换前:这两张牌存放于左右手中,所以我们可以将左右手看作是两个容器(即两个变量),将两张牌看作是两个变量的值;并且数据类型是字符串型。 写出代码:

    String leftHand="黑桃10"; //左手 String rightHand="红桃8"; //右手

    (2)如何交换?假设现在有两个杯子A和B,分别装着可乐和橙汁,怎样才能把这两个杯子中的饮料互换呢?直接将一个杯中的饮料倒入另一个杯中肯定是不行的,所以我们必须借助另一个空杯子C,先将A杯中的可乐倒入空杯C中,再将B杯中的橙汁倒入A杯中,再将C杯中的可乐倒入B杯中,大功告成!如图所示: 根据这个原理,我们继续写出代码:

    String empty; //声明一个空变量empty empty=leftHand; //将左手中的牌赋给空变量 leftHand=rightHand; //将右手中的牌赋给左手 rightHand=empty; //将空变量中存储的左手的牌赋给右手

    4.习题:模拟实现花呗分期还款功能

    4.1 说明如下:

    分期时间(月)手续费比例举例00%本月借2000,下月应还200032.5%本月借2000,此后每月应还2000*(1+2.5%)/364.5%本月借4000,此后每月应还4000*(1+4.5%)/696.5%本月借8000,此后每月应还8000*(1+6.5%)/9128.8%本月借10000,此后每月应还10000*(1+8.8%)/12

    4.2 实现思路:

    4.2.1 将几种手续费比例声明为常量(规定好的数据,不允许用户更改); 4.2.2 从控制台获取用户要借的钱数,存入一个变量中; 4.2.1 按照题目中的公式分别计算出每月应还钱数,并输出;

    4.3 部分参考代码和效果图:

    public static void main(String[] args) { //定义各个手续费比例常量 final double THREE=0.025; final double SEX=0.045; final double NINE=0.065; final double TWELVE=0.088; //获取用户要借的钱数 Scanner input=new Scanner(System.in); System.out.println("请输入您的借款金额:"); double money=input.nextDouble(); //计算并输出结果 System.out.println("分3期还:手续费总额:"+(money*THREE) +"\t每月应还:"+(money+money*THREE)/3); System.out.println("分6期还:手续费总额:"+(money*SEX) +"\t每月应还:"+(money+money*SEX)/6); System.out.println("分9期还:手续费总额:"+(money*NINE) +"\t每月应还:"+(money+money*NINE)/9); System.out.println("分12期还:手续费总额:"+(money*TWELVE) +"\t每月应还:"+(money+money*TWELVE)/12); }

    5.常用单词

    1. double:(双、两)双精度浮点型 2. char:字符 3. string:字符串 4. final:最终的,不可改变的 5. empty:空的 4. scanner:扫描仪 5. score:成绩、分数 6. true:真 7. false:假 8. boolean:布尔(取自英国数学家、逻辑学家George Boole--乔治·布尔的名字)

     免费学习视频欢迎关注云图智联:https://e.yuntuzhilian.com/

    Processed: 0.020, SQL: 9