操作数数据类型 char 对于 sum 运算符无效。_数据类型和运算符

数据类型和运算符

1.进制

1.1文件存储单位

​ 任何数据在计算机中都是以二进制的形式存在的,二进制早期由电信号开关演变而来 。

​ 一个电信号或者一个二进制位统称为Bit位,8个Bit位为一组组成一个字节Byte

​ 一个bit位表示的数的范围:0和1

​ 一个byte表示的数的范围:256个数

​ 无符号数:0-255(28-1) 256个数

​ 有符号数:-128(-27)-- 127(27-1) 还是256个数

1.2 常见的进制介绍

  • 2进制(计算机能够识别的),逢二进一

​ 用0和1来表示

  • 8进制,逢八进一

​ 用0-7来表示

​ 注意:8进制以0b开头

  • 10进制(人类最常见的进制),逢十进一

​ 用0-9来表示

  • 16进制,逢十六进一

​ 用0-9和ABCDEF来表示

​ 注意:16进制以0x开头

2.常量和变量

2.1关键字与保留字

​ java关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构。

e470070bde0391f7482edbbca35c4867.png

2.2 标识符

标识符是用于给java程序中的变量方法、包等命名的符号。

标识符需要遵守一定的规则:

1)标识符必须以字母(A-Z和a-z)、数字(0-9)、下划线“_”、美元符号“$”组成。

2)标识符不能以数字开头,其它部分可以是字母、下划线、美元符和数字的任意组合。

3)Java 标识符大小写敏感,且长度无限制。

4)标识符不可以是Java的关键字

标识符的使用规范: 表示类名的标识符应首字母大写,并且采用驼峰式命名法则。

例如:Person, GoodStudent

表示方法和变量的标识符应首字母小写,并且采用驼峰式命名法则。

例如:int userName; public void eatFood(){}

注意:Java不采用通常语言使用的ASCII字符集,而是采用unicode这样的标准的国际字符集。因此,这里的字母的含义不仅仅是英文,还包括汉字等等。但是不建议大家使用汉字来定义标识符!

2.3 变量(Variable)与常量(Constant)

变量声明语法:数据类型 变量名;

变量的特点:在于“变”字,声明变量所开辟的内存空间可以多次赋值。

常见问题总结:

  • 在方法中声明的变量,必须是赋值之后才能使用。
  • 先声明后赋值,没用声明的变量名什么都不是。
  • 变量名必须是合法的标识符,采用首字母小写的驼峰式命名。
  • 赋值的数据类型必须和声明变量类型一致。
  • 在同一个方法中,不能声明多个同名的变量。

常量语法:final 数据类型 常量名 = 数据值

Final float PI = 3.1415926f;

注意事项

  • 常量只能被赋值一次,赋值完毕后就不能再更改值。
  • 常量名一般由大写字母组成,多个单词可以用下划线分割,例如:final int MAX_VALUE = 100;

3 .基本数据类型

  • java是一种强类型语言,每个变量都必须声明其类型。
  • java的数据类型分为两大类:基本类型(primitive type)和引用类型(reference type)。

c78099eadc74cb5954f722f0b044062e.png

3.1 整数型

605db7a37428ba3f11fd6d6b1b7f0f93.png

注意事项

  • 注意数据类型的表数范围,避免出现超出表数范围精度丢失的情况。
  • 整型常量默认为int类型,声明long型常量可以加“l”或“L”,建议使用“L”。

3.2浮点型

小数类型在Java中称为浮点类型 。

浮点类型分为float类型和double类型

f240d426cc89e240885efc151e9f630a.png

注意事项

  • 浮点型常量默认为double类型。
  • 浮点型常量赋值给float类型,需要在常量后面添加“f”或 “F”。
  • 避免直接比较两个浮点数的大小,这样比较可能会出现问题。

3.3布尔型

  • boolean类型有两个值:true和false。true代表真,false代表假。
  • boolean类型用来判断逻辑条件,常用于程序流程控制。

​ boolean类型占用几个字节:没有具体的规定

1个bit

​ 理由是boolean类型的值只有true和false两种逻辑值,在编译后会使用1和0来表示,这两个数在内存中只需要1位(bit)即可存储,位是计算机最小的存储单位。

1个字节

​ 理由是虽然编译后1和0只需占用1位空间 ,但计算机处理数据的最小单位是1个字节,1个字节等于8位,实际存储的空间是:用1个字节的最低位存储,其他7位用0填补,如果值是true的话则存储的二进制为:0000 0001,如果是false的话则存储的二进制为:0000 0000。

3.4字符型

  • 字符型在内存中占有2个字节,在Java中使用单引号包裹起来的一个字符称之为字符常量。例如‘A’是一个字符,它与“A”是不同的,“A”表示含有一个字符的字符串。
  • char类型和int类型的联系和区别

联系:char类型常量在内存中存储的就是Unicode编码值,例如:'A'— 65, '1'— 49。在一定范围内,char类型和int类型是可以通用的

区别:

​ 1. 分配的内存空间不同,int类型占4个字节,char类型占用2个字节。

​ 2.数值表示的范围不同,int类型标识的范围比char类型更大,并且int类型还可以表示负数

4. Scanner键盘输入

​ java.util.Scanner是java5的新特征,主要功能是获取控制台输入的数据

4.1导入Scanner包

import java.util.Scanner;

4.2初始化Scanner对象

Scanner input = new Scanner(System.in);

4.3获取输入的数据

String str = input.nextLine();

例子:通过键盘录入获取圆的半径,然后计算出该圆的周长和面积

import java.util.Scanner;
public class ScannerTest {
    public static void main(String[] args) {
        // 通过Scanner获取半径
        Scanner input = new Scanner(System.in);
        System.out.print("请输入半径:");
        double r = input.nextDouble();
        // 计算出该圆的周长和面积。
        final double PI = 3.1415926;
        // 周长:2*PI*r
        double circumference = 2*PI*r;
        // 面积:PI*r*r
        double area = PI*r*r;
        System.out.println("周长:" + circumference + " 面积:" + area);
    }
}

5 基本数据类型转换

​ 在赋值运算或算术运算时,要求数据类型相同,否则就要进行类型转换。

转换的方式:

  • 自动类型转换(隐式)
  • 强制类型转换(显示)

基本数据类型的转换主要包含:byte、short、int、long、float、double和char,不包含boolean类型。

5.1自动类型转换

自动类型转换(隐式类型转换)指的是容量小的数据类型可以自动转换为容量大的数据类型。(由低字节向高字节的转换 byte->short-> char –>int->long->float->double )

​ 把整数常量(int类型)赋值给byte、short和char类型变量,属于自动类型转换的特例,只要不超出其表数范围即可。

算数运算中的类型自动转换原则:

  • 如果两个操作数其中有一个是double类型,另一个操作就会转换为double类型。

 否则,如果其中一个操作数是float类型,另一个将会转换为float类型。  否则,如果其中一个操作数是long类型,另一个会转换为long类型。 * 否则,两个操作数都转换为int类型。

5.2强制类型转换

强制类型转换(显示类型转换),主要用于显式的转换一个数值的类型。在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出。

语法格式:目标类型 变量 =(目标类型)源类型变量或常量

例:byte b = (byte)a

6.运算符(operator)

6.1算数运算符

6.1.1二元运算符

+:

  • 对于数值型数据,可以做加法运算
  • 对于字符串类型数据,做的是连接符操作,做的就是拼接操作! 还可以表示正数,+5
    **-:**
  • 对于数值型数据,可以做减法运算 还可以表示负数,-5
    *****:
  • 对于数值型数据,可以做乘法运算
    **/:**
  • 对于数值型数据,可以做除法运算
    **%:**
  • 取余或取模,也就是获取不能被整除的数
    例:5%7,结果为:5

习题:获取整数987的百位数、十位数和个位数

import java.util.Scanner;
public class OperatorDemo01 {
    public static void main(String[] args) {
        // 2、获取整数987的百位数、十位数和个位数。
        int num = 987;
        // 获取百位数,9
        int bit1 = num / 100;
        // 获取十位数,8
        // 思路一:先获取98,然后再获取8
        // int bit2 = num / 10 % 10;
        // 思路二:先获取87,然后再获取8
        int bit2 = num % 100 / 10;
        // 获取个位数,7
        int bit3 = num % 10;
        System.out.println("百位数:" + bit1 + " 十位数:" + bit2 + " 个位数:" + bit3);

6.1.2一元运算符

一元运算符,只需要一个操作数参与运算即可! ++:

  • 自增运算符
    num++和++num,都等效于:num = num + 1; 当和别的操作数一起运算的时候: num++,先运算,后自增! ++num,先自增,后运算!--:
  • 自减运算符
    num--和--num,都等效于:num = num - 1; 当和别的操作数一起运算的时候: num--,先运算,后自减! --num,先自减,后运算!

6.2赋值运算符

=:

  • 把等号右边的数据赋值给等号左边的变量或final修饰的常量!
    需求:交换两个变量的值(用两种方式实现)。
  • 1.定义一个临时变量
int temp = num1;
        num1 = num2;
        num2 = temp;
  • 2.不需要零时变量参与
int num1 = 10, num2 = 20;
num1 = num1 + num2; // num1 = 30, num2 = 20;
num2 = num1 - num2; // num1 = 30, num2 = 10;
num1 = num1 - num2; // num1 = 20, num2 = 10;

6.3扩展赋值运算符

扩展赋值运算符:是算术运算符和赋值运算符结合

30fd0ba6da46406358dba2ed69c7443b.png

6.4 关系运算符

关系运算符用来进行比较运算,关系运算符的运算结果是boolean类型。

<、>=、<=、==、!=

6.5逻辑运算符

&, |, ^, &&, ||, ! 特点:参与逻辑运算的数据类型都必须是boolean类型 逻辑运算符执行完毕返回的结果也是boolean类型

  • &与

​ 两边都为true时,那么返回的结果就为true 只要有一边为false,那么返回的结果就为false 辅助记忆:小明与小红来一趟办公室!

  • |或

​ 两边都为false时,那么返回的结果就为false 只要有一边为true,那么返回的结果就为true 辅助记忆:小明或小红来一趟办公室!

  • ^异或

​ 当两边不相同时,返回的结果才为true 当两边相同时,返回的结果才为false

  • &&短路与

​ &和&&相同点: 返回的boolean结果都是一模一样!

&和&&不同点:执行过程不一样

&&:当左边表达式的结果为false时,那么右边表达式不需要执行,直接返回左侧表达式的结果即可!

当左边表达式的结果为true时,那么右边表达式需要执行,直接返回右侧表达式的结果即可!

&:无论左侧表达式结果为什么(true或false),右边表达式都需要执行!
现实开发中,使用&&最常见,因为&&的执行效率高于&!

  • ||短路或

​ |和||相同点:执行过程不一样,返回的boolean结果都是一模一样!

|和||不同点:

||:当左边表达式的结果为true时,那么右边表达式不需要执行,直接返回左侧表达式的结果即可!

当左边表达式的结果为false时,那么右边表达式需要执行,直接返回右侧表达式的结果即可

|:无论左侧表达式结果为什么(true或false),右边表达式都需要执行!

现实开发中,使用||最常见,因为||的执行效率高于|

  • !取反,并时属于一元运算符

​ 当true取反,结果为false 当false取反,结果就是true

6.6三元运算符

三元运算符又称为三目运算。

语法格式:条件表达式? 表达式1 表达式2

如果条件表达式为true,则取表达式1的值,否则就取表达式2的值。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我可以回答这些问题。 1. 判断整数i能否同时被3和11整除的程序实现: ``` #include <stdio.h> int main() { int i; printf("请输入一个整数:"); scanf("%d", &i); if (i % 3 == && i % 11 == ) { printf("yes\n"); } else { printf("no\n"); } return ; } ``` 2. 判断x*x y*y z*z的千位以上的数字或输出3数之和的程序实现: ``` #include <stdio.h> int main() { int x, y, z; printf("请输入三个整数:"); scanf("%d%d%d", &x, &y, &z); int sum = x + y + z; int product = x * x + y * y + z * z; if (product > 100) { int digit = product / 100; printf("%d\n", digit); } else { printf("%d\n", sum); } return ; } ``` 3. 实现一个简单的运算器,能够完成两个数的加、减、乘、除四种运算,并输出结果的程序实现: ``` #include <stdio.h> int main() { double a, b; char op; printf("请输入两个数和一个运算符:"); scanf("%lf %lf %c", &a, &b, &op); double result; switch (op) { case '+': result = a + b; break; case '-': result = a - b; break; case '*': result = a * b; break; case '/': result = a / b; break; default: printf("无效运算符\n"); return 1; } printf("%g\n", result); return ; } ``` 4. 将输入的整数成绩转换成为相应的等级的程序实现: ``` #include <stdio.h> int main() { int score; printf("请输入一个成绩:"); scanf("%d", &score); if (score >= 90) { printf("优秀\n"); } else if (score >= 80) { printf("良好\n"); } else if (score >= 70) { printf("中等\n"); } else if (score >= 60) { printf("及格\n"); } else { printf("不及格\n"); } return ; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值