Java开发零基础篇:Day02 变量和运算符

简介: 变量和运算符


变量
通过一张不完整的房屋租赁合同,引出变量。

案例:张三需要租赁李四的房屋,租赁合同如下:

上述合同,相当不正规,因为正规的合同上,租客和房东都是有变动的,不能写死,在整个合同中应该 是使用甲方来表示房东,乙方来表示租客,只会在最后的时候签名甲方是谁,乙方是谁。

变量概述
表示存储空间,可用来存放某一类型的常量,没有固定值,并可以重复使用。变量是内存中一块区域,可以往该区域存储数据,修改里面的数据,也可以获取里面的数据。

变量的特点:

(1)占据着内存中的某一块存储区域

(2)该区域有自己的名称(变量名)和类型(数据类型) 可以被重复使用

(3)该区域的数据可以在同一类型范围内不断变化

变量定义和赋值
1.定义一个int类型变量,并赋值。

public class Demo01 {
   public static void main(String[] args) {
       /**
        * 方式一:先定义 后赋值
        * 语法:数据类型 变量名;
        *     变量名 = 常量值;
        */
       int age;
       age = 21;
       System.out.println(age);

       /**
        * 方式二:定义同时赋值
        * 语法: 数据类型 变量名 = 初始化值;
        */
       String name = "BanQ";
       System.out.println(name);
  }
}
控制台输出:

21
BanQ
使用变量注意:

(1)变量必须先声明,并且初始化后才能使用定义变量必须有数据类型;

(2)变量从开始定义到所在的花括号结束之内可以使用,离开花括号就不能使用了同一作用域内,变量名不能重复定义;

以上面的代码为例:

String,表示类型,这里可以写任何的类型;

name:变量名,和我们的姓名一样理解;

=:赋值运算符,意思是将右边的值赋值给左边的变量“BanQ”。

2.定义每一种数据类型的变量。

public class Demo02 {
   public static void main(String[] args) {
       //byte类型变量
       byte byteVar = 1;
       System.out.println(byteVar);

       //short类型变量
       short shortVar = 2;
       System.out.println(shortVar);

       //int类型变量
       int intVar = 3;
       System.out.println(intVar);

       //long类型变量
       long longVar = 4L;
       System.out.println(longVar);

       //float类型变量
       float floatVar = 0.5F;
       System.out.println(floatVar);

       //double类型变量
       double doubleVar = 0.6;
       System.out.println(doubleVar);

       //char类型变量
       char charVar = '7';
       System.out.println(charVar);

       //boolean类型变量
       boolean booleanVar = true;
       System.out.println(booleanVar);

       //String类型变量
       String stringVar = "8";
       System.out.println(stringVar);
  }
}
控制台输出:

1 2 3 4 0.5  0.6 7 true 8
3.交换两个相同类型变量的值。

(1)把num1的值存储到临时变量temp中去;

(2)把num2的值赋给num1变量;

(3)把temp存储的值赋给num2变量。

public class Demo03 {
   public static void main(String[] args) {
       int num1 = 10;
       int num2 = 20;
       System.out.println("交换前num1:" + num1);
       System.out.println("交换前num2:" + num2);
       //交换操作
       int temp;
       temp = num1;
       num1 = num2;
       num2 = temp;
       System.out.println("交换后num1:" + num1);
       System.out.println("交换后num2:" + num2);
  }
}
控制台输出:

交换前num1:10
交换前num2:20
交换后num1:20
交换后num2:10
表达式
表达式(expression),是由数字、运算符、括号、常量、变量等以能求得结果的组合。

表达式举例(下列a、b、x、y、z都表示变量)。

(1)a + b

(2)3.14 + a

(3)(x + y) * z + 100

基本数据类型转换
在8大基本数据类型中,boolean不属于数值类型,所以不参与转换,其他类型的转换规则如下图。一般的,byte、short、char三种类型相互之间一般不参与转换操作。

按照转换方式,有两种(注意:boolean类型不参与类型转换):

自动类型转换:范围小的数据类型直接转换成范围大的数据类型,小->大。

强制类型转换:范围大的数据类型强制转换成范围小的数据类型,大->小。

自动类型转换
自动类型转换,也称为“隐式类型转换,就是把范围小的数据类型直接转换成范围大的数据类型。

转换规则:byte、short、char—>int—>long—>float—>double

注意事项:byte、short、char相互之间不转换,他们参与运算首先转换为int类型

语法格式:范围大的数据类型 变量 = 范围小的数据类型值;

public class Demo04 {
   public static void main(String[] args) {
       // int类型 -> long类型
       long longVar = 17; //整数类型默认为int类型

       // long类型 -> float类型
       float floatVar = longVar;

       // float类型 -> double类型
       double doubleVar = floatVar;

       //自动类型提升
       int a = 1;
       int b = 2;
       int c = a + b;

       byte d = 2;
       int e = 3;
       //byte short char 类型参与运算时会自动提升为int类型
       System.out.println(d + e);
  }
}
自动类型提升
当一个算术表达式中,包含多个基本数据类型的常量或变量(boolean除外)时,整个算术表达式的结果类型将在出现自动提升,其规则是:

(1)所有的byte、short、char类型被自动提升到int类型,再参与运算;

(2)整个表达式的最终结果类型,被提升到表达式中类型最高的类型。

public class Demo05 {
   public static void main(String[] args) {
       System.out.println('a' + 1);
       byte a = 1;
       a = a + 2;  //编译失败
       double b = 1 + 2F + 3.14 + 4L;  //类型自动转化为最高类型double
       System.out.println(b);
  }
}

因此,算数表达式结果的类型就是其中范围最大的数据类型。

强制类型转换
强制类型转换,也称为显式类型转换,就是把范围大的数据类型强制转换成范围小的数据类型。

语法格式:

范围小的数据类型 变量 = (范围小的数据类型)范围大的数据类型值;

但是一般情况下不建议使用强转,因为强转有可能损失精度。

public class Demo06 {

public static void main(String[] args) {
    int a = 1;
    byte b = 2;
    //自动类型转换
    int c = a + b;
    //强制类型转换
    byte d = (byte)(a + b);
    int e = (int)1.23;
    System.out.println(e);  //输出1
}

}
运算符
对常量和变量进行操作的符号称为运算符。

常用运算符:

算术运算符

赋值运算符

比较运算符

逻辑运算符

三元运算符

算术运算符

加减乘除余
对于字符串而言,+符号表示连接操作,任何类型的数据和字符串相连接,结果都是字符串。

public class Demo07 {

public static void main(String[] args) {
    int a = 20;
    int b = 10;
    //加减乘除
    System.out.println(a + b);
    System.out.println(a - b);
    System.out.println(a * b);
    System.out.println(a / b);
    //取模求余
    System.out.println(a % b);
    //字符串
    System.out.println(1+2+"BanQ");
    System.out.println("BanQ"+1+2);
}

}
控制台输出:

30
10
200
2
0
3BanQ
BanQ12
自增和自减
自增:++,递增操作符,使变量值增加1,有前置和后置之分,只能操作变量。

自减:-- ,递减操作符,使变量值减去1,有前置和后置之分,只能操作变量。

自增和自减具体操作是一样的,仅仅是一个是加1,一个是减1而已。

public class Demo08 {

public static void main(String[] args) {
    int a = 1;
    int b = ++a;
    System.out.println("a=" + a);
    System.out.println("b=" + b);

    int c = 1;
    int d = c++;
    System.out.println("c=" + c);
    System.out.println("d=" + d);
}

}
控制台输出:

a=2
b=2
c=2
d=1
代码 a++和 ++a,结果都是a变量的值加1。唯一的区别是:

前置(++a): 表示对result加1之后的结果进行运算

后置(a++): 表示对result变量加1之前的值(原始值)进行运算。

如果仅仅执行简单的递增操作(只写a++或++a),那么选用任意一个都可以。

正确的解释:

++a表示取a的地址,增加它的内容,然后把值放在寄存器中;

a++表示取a的地址,把它的值装入寄存器,然后增加内存中的a的值;

如果不理解什么是寄存器,简单记住,都可以表示当前变量自身加1,区别是:

前置++:先增加后使用

后置++:先使用后增加

赋值运算符

public class Demo09 {

public static void main(String[] args) {
    int a = 1;
    System.out.println("a=" + a);
    a += 1;
    System.out.println("a=" + a);
    short b = 2;
    b += 1; //等价于 b = (short)(b + 1)
    System.out.println("b=" + b);
}

}
控制台输出:

a=1
a=2
b=3
比较运算符
用于比较两个变量或常量之间的大小关系,其结果是boolean类型(要么为true,要么为false)。

其格式为:

boolean 变量名 = 表达式A 比较运算符 表达式B;

注意:>=符号,表示大于或者等于。

public class Demo10 {

public static void main(String[] args) {
    System.out.println(10 > 5);
    System.out.println(10 >= 5);
    System.out. println(10 >= 10);
    System.out. println(10 < 5);
    System.out. println(10<= 5);
    System.out. println(10 <=10);
    System.out.println(10 == 10);
    System.out.println(10 != 10);
    int a = 10;
    int b = 5 ;
    boolean result = a > b;
    System.out.println(result);
}

}
控制台输出:

true
true
true
false
false
true
true
false
true
三元运算符
三元运算符,表示有三个元素参与的表达式,所以又称为三目运算符,其语义表示if-else(如果什么情况就做什么,否则做什么)。

语法格式:

数据类型 变量名 = boolean表达式 ? 结果A :结果B;

如果boolean表达式结果:

为true,则三元运算符的结果是结果A;

为false,则三元运算符的结果是结果B;

注:三元运算符必须定义变量接受运算的结果,否则报错。

三元运算符结果的类型由结果A和结果B来决定的,结果A和结果B的类型是相同的。

(1)判断一个数是不是偶数

public class Demo11 {

public static void main(String[] args) {
    int a = 77;
    String result = a % 2 == 0 ? "偶" : "奇";
    System.out.println(result); //奇
}

}
(2)求99和20两个数中的最大值

public class Demo12 {

public static void main(String[] args) {
    int a = 99;
    int b = 20;
    int result = a > b ? a : b;
    System.out.println("最大值:" + result); //99
}

}
(3)—共55条数据,每叶10个条数据,一共分多少页

public class Demo13 {

public static void main(String[] args) {
    int totalCount = 55;
    int pageSize = 5;
    int totalPage = totalCount % pageSize == 0
            ? totalCount / pageSize
            : totalCount / pageSize + 1;
    System.out.println(totalPage);  //11
}

}
逻辑运算符
逻辑运算符用于连接两个boolean表达式,结果也是boolean类型的。

语法格式为:

boolean 变量名 = boolean表达式A 逻辑运算符 boolean表达式B;

运算规则如下:

规律:

非:取反,!true则false,!false则true

与:有false则false

或:有true则true

异或:^ 相同则false,不同则true

public class Demo14 {

public static void main(String[] args) {
    int a = 10;
    int b = 20;
    int c = 30;
    //与操作
    System.out.println((a > b) & (a > c)); //false & false
    System.out.println((a > b) & (a < c)); //false & true
    System.out.println((a < b) & (a > c)); //true & false
    System.out.println((a < b) & (a < c)); //true & true
    //或操作
    System.out.println((a > b) | (a > c)); //false & false
    System.out.println((a > b) | (a < c)); //false & true
    System.out.println((a < b) | (a > c)); //true & false
    System.out.println((a < b) | (a < c)); //true & true
    //相反操作
    System.out.println((a > b)); //false
    System.out.println(!(a > b)); //!false
    System.out.println(!!(a > b)); //!!false
}

}
控制台输出:

false
false
false
true
false
true
true
true
false
true
false
&和&&的区别

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

&& :如果&&左边表达式为真,&&右边表达式参与运算,否则&&右边表达式不参与运算,故称短路与。

| 和 || 的区别同理,||,左边为真,右边不参与运算。

public class Demo15 {

public static void main(String[] args) {
    System.out.println(false & 1/0 ==1); //报错,说明右边表达式执行了
    System.out.println(false && 1/0 ==1); //不报错,说明右边表达式不执行
    System.out.println(true | 1/0 ==1); //报错,说明右边表达式执行了
    System.out.println(true || 1/0 ==1); //不报错,说明右边表达式不执行
}

}
运算优先级
表达式的运算都是有优先级的,基本上和数学中的优先级类似,这里需要注意的是,赋值符号。

注意:赋值符号最后运算的,并且是从右向左运算的。

以上就是Java入门第二天的全部内容了。

资料文档地址:Java开发零基础篇:Day02变量和运算符.pdf

目录
相关文章
|
7天前
|
机器学习/深度学习 人工智能 NoSQL
JAVA接入DeepSeek大模型接口开发---阿里云的百炼模型
随着大模型的越来越盛行,现在很多企业开始接入大模型的接口,今天我从java开发角度来写一个demo的示例,用于接入DeepSeek大模型,国内的大模型有很多的接入渠道,今天主要介绍下阿里云的百炼模型,因为这个模型是免费的,只要注册一个账户,就会免费送百万的token进行学习,今天就从一个简单的可以执行的示例开始进行介绍,希望可以分享给各位正在学习的同学们。
106 3
JAVA接入DeepSeek大模型接口开发---阿里云的百炼模型
|
20天前
|
存储 传感器 缓存
java变量与数据类型:整型、浮点型与字符类型
### Java数据类型全景表简介 本文详细介绍了Java的基本数据类型和引用数据类型,涵盖每种类型的存储空间、默认值、取值范围及使用场景。特别强调了`byte`、`int`、`long`、`float`、`double`等基本类型在不同应用场景中的选择与优化,如文件流处理、金融计算等。引用数据类型部分则解析了`String`、数组、类对象、接口和枚举的内存分配机制。
49 15
|
27天前
|
人工智能 安全 IDE
一天成为Java开发高手:用飞算JavaAI实现十倍提效
“一天成为Java开发高手”曾被视为天方夜谭,但飞算JavaAI的出现改变了这一局面。这款AI开发助手通过智能引导、需求分析、自动化逻辑处理和完整代码工程生成,大幅简化了Java开发流程。它不仅帮助新手快速上手,还让资深开发者提高效率,减少调试时间。现在,参与“飞算JavaAI炫技赛”,展示你的开发实力,赢取丰厚奖品!
|
19天前
|
SQL IDE 算法
《从头开始学java,一天一个知识点》之:运算符与表达式:算术、比较和逻辑运算
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问&quot;`a==b`和`equals()`的区别&quot;,大脑突然空白 - 写出的代码总是莫名报NPE,却不知道问题出在哪个运算符 这个系列为你打造Java「速效救心丸」,每天1分钟,地铁通勤、午休间隙即可完成学习。直击高频考点和实际开发中的「坑位」,拒绝冗长概念,每篇都有可运行的代码示例。明日预告:《控制流程:if-else条件语句实战》。
30 6
|
20天前
|
Java
课时15:Java运算符(基础数学运算符)
课时15介绍了Java中的基础数学运算符,涵盖加、减、乘、除及自增自减运算。强调了运算符的优先级和使用括号的重要性,并通过范例展示了四则运算与自增自减的具体应用。提醒编写代码时应保持简洁,避免复杂的表达式,确保代码易读性和可维护性。
|
20天前
|
Java
课时17:Java运算符(关系运算符)
范例:进行关系判断。如果要进行关系运算的操作可使用:>、<、>=、<=、!=(不等于)、==。所有的关系运算符判断完成的数据返回结果都是布尔类型(boolean)。只要使用关系运算符进行逻辑判断,最终的结果就是布尔型,只有true和false两种结果,而且能和if语句结合使用。
|
20天前
|
Java
课时16:Java运算符(三目运算符)
范例:将两个变量值在大的内容赋值给新变量。三目是一种赋值运算,它指的是根据条件来进行判断。(根据判断的结果来决定赋值内容)对于三目运算的基本使用语法如下: 数据类型 变量 = 布尔表达式 ?条件满足时赋值内容:条件不满足时:赋值内容
|
20天前
|
Java 程序员 数据处理
课时19:Java运算符(位运算符)
课时19介绍Java中的位运算符,涵盖进制转换、位与、位或及移位操作。重点讲解了二进制与其他进制的转换方法,通过具体范例演示了位与和位或运算的过程,并展示了八进制和十六进制的处理方式。此外,还解释了逻辑运算符(&&、||)与位运算符(&、|)的区别及其应用场景,特别是位运算在加密中的应用。
|
20天前
|
Java
课时18:Java运算符(逻辑运算符)
课时18介绍了Java中的逻辑运算符(与、或、非)。通过范例详细讲解了非操作的使用,展示了如何正确应用逻辑非(!)。接着分别探讨了与操作(& 和 &&)及或操作(| 和 ||),强调了短路运算符(&& 和 ||)在性能和安全性上的优势。课程通过具体代码示例演示了不同逻辑运算符的效果及其应用场景。
|
1月前
|
JavaScript 安全 Java
智慧产科一体化管理平台源码,基于Java,Vue,ElementUI技术开发,二开快捷
智慧产科一体化管理平台覆盖从备孕到产后42天的全流程管理,构建科室协同、医患沟通及智能设备互联平台。通过移动端扫码建卡、自助报道、智能采集数据等手段优化就诊流程,提升孕妇就诊体验,并实现高危孕产妇五色管理和孕妇学校三位一体化管理,全面提升妇幼健康宣教质量。
53 12