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

免费学习视频欢迎关注云图智联: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   %:取余 如:1024%100=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,下月应还2000
32.5%本月借2000,此后每月应还2000*(1+2.5%)/3
64.5%本月借4000,此后每月应还4000*(1+4.5%)/6
96.5%本月借8000,此后每月应还8000*(1+6.5%)/9
128.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/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值