java--编程实现变量的声明和使用

目录

变量的基本概念 

标识符的命名法则

案例1:提示用户从键盘输入自己的姓名和年龄信息并打印出来

数据类型的分类

进制之间的转换

基本数据类型之间的转换


变量的基本概念 

​​​​​​​当需要在程序中记录单个数据内容时,则声明一个变量即可,而声明变量的本质就是在内存中申请一个存储单元,由于该存储单元中的数据内容可以发生改变,因此得名“变量”

由于存放的数据内容大小不一样,导致所需存储单元的大小不一样,在Java语言中使用数据类型加以描述,为了便于下次访问还需要给变量指定一个名字,用于记录该变量对应的存储单元。


变量的声明方式:数据类型 变量名 = 初始值;     =初始值可以省略,但;不行

/*
编程实现变量的声明和使用
*/
public class VarTest {
    
  public static void main(String[] args) {
      
      //1.声明一个变量并初始化 数据类型 变量名 = 初始值;
      int age = 18;
      String name = "花花";
      //2.打印变量数值
      System.out.println("年龄是" + age);
      System.out.println("姓名是" + name);
  }
}

变量的注意事项:

1.使用变量之前需要声明

2.使用变量之前需要初始化

3.变量不能重复声明


标识符的命名法则

由数字,字母,下划线以及$组成,其中数字不能开头。不能使用Java语言的关键字,所谓关键字就是Java语言用于表示特殊含义的单词。区分大小写,长度没有限制。尽量做到见名知意,支持中文但不推荐使用。标识符可以给类/变量/属性/方法/包 起名字。


案例1:提示用户从键盘输入自己的姓名和年龄信息并打印出来

/*
编程实现变量的输入输出
*/
import java.util.Scanner;

public class VarIOTest {
    
  public static void main(String[] args) {
      
      //1.声明两个变量用于记录姓名年龄信息
      //String name;
      //int age;
      //2.提示用户从键盘输入姓名和年龄信息并放入变量中
      System.out.println("请输入您的姓名和年龄信息:");
      //创建一个扫描器来扫描键盘输入的内容 System.in代表键盘输入
      Scanner sc = new Scanner(System.in);
      //通过扫描器读取一个字符串数据放入变量name中,一个整数数据放入变量age中 
      //变量随用随声明
      String name = sc.next();
      int age = sc.nextInt();
      //3.打印变量的数值 尽可能减少重复代码
      System.out.println("姓名是" + name + ",年龄是" + age);
  }
}


数据类型的分类

在Java语言中数据类型主要分为两大类:

(1)基本数据类型

整数类型:

byte在内存空间中占1个字节,表示范围是:-2^7~2^7-1(-128~127)

short在内存空间中占2个字节,表示范围是:-2^15~2^15-1(-32768~32767)

int在内存空间中占4个字节,表示范围是:-2^31~2^31-1(-2147483648~2147482647)

long在内存空间占8个字节,表示范围:-2~63-2^63-1

在java程序中直接写出的整数数据叫做直接量/字面值/常量,默认为int类型。若希望表达更大的直接量,则在直接量的后面加上l或L,推荐L.

/*
 编程实现整数类型的使用
 */
public class IntTest {

  public static void main (String[] args){
    //1.声明一个byte类型的变量并初始化
    byte b1 = 25;
    //byte b1 = 250;错误:不兼容的类型从int转换为byte可能会有损失 250这样直接写出的整数数据叫做直接量/常量/字面值 默认为int类型
    //声明一个short类型的变量并初始化
    short s1 = 250;
    //声明一个int类型的变量并初始化
    int i1 = 250250;
    //int i1 = 250250250250;错误:整数太大 默认为int类型,这个数据自身出错超过int范围
    //int i1 = 250250250250L;错误:不兼容类型,从long类型转换为int类型会有损失
    //声明一个long类型的变量 若描述一个比long类型还大的数据则使用java.math.BigInteger类型
    long l1 = 250250250250L;
    //2.打印变量的值
    System.out.println("b1 =" + b1);//b1=25
    System.out.println("s1 =" + s1);//s1=250
    System.out.println("i1 =" + i1);//i1=250250
    System.out.println("l1 =" + l1);//l1=250250250250
    //3.请问下面的代码是否有错误?若有请指出并说明原因
    //int i2 = 25;
    //byte b2 = i2;错误:不兼容的类型,从int类型转换为byte类型会有损失 i2是变量随时会发生变化,不一定在byte范围内
   // System.out.println("b2 =" + b2);
  }
}

浮点类型:java语言中用于描述小数数据的类型:float和double,推荐double类型。

其中float类型在内存空间占4个字节,叫做单精度浮点数,可以表示7位有效数字,范围:-3.403E38~3.403E38

其中double类型在内存空间占8个字节,叫做双精度浮点数,可以表示15位有效数字,范围:-1.798E308~1.798E308

Java程序中直接写出的小数数据叫做直接量,默认为double类型,若希望表达float类型的直接量,则需要在直接量的后面加上f或者F

/*
 编程实现浮点类型的使用
 */
public class Test {

  public static void main (String[] args){
    //1.声明一个float类型的变量并初始化
    //float f1 = 3.1415926;不兼容的类型从double转换为float可能会有损失
    float f1 = 3.1415926f;//默认7为有效数字
    double d1 = 3.1415926;//一般是15位有效数字
    //2.打印变量的数值
    System.out.println("f1 = " + f1);//f1=3.1415925 
    System.out.println("d1 = " + d1);//d1=3.1415926 
    //3.笔试考点
    System.out.println(0.1 + 0.2);//0.30000000000000004 运算时会有误差,若希望实现精确运算则借助java.math.BigDecimal类型
  }
}

布尔类型:java语言中用于描述真假信息类型有:boolean,数值只有:true和false.布尔类型在内存空间中所占大小没有明确的规定,可以认为是1个字节。

/*
 编程实现布尔类型的使用
 */
public class BooleanTest {

  public static void main(String[] agrs) {
    //1.声明一个boolean类型的变量并初始化
    boolean b1 = true;
    //2.打印变量的数值
    System.out.println("b1 = " + b1);//b1 = true
    //3.修改变量b1的数值。= 赋值运算符,用于将=右边的数据赋值给=左边的数值,覆盖变量原本的数值
    b1 = false;
    System.out.println("b1 = " + b1);//b1 = false
    //b1 = 1;错误:不兼容的类型,int无法转换为boolean boolean数值只有:true和false
  }
}

字符类型:java语言中用于描述单个字符的数据类型:char类型。如:'a','中'等。其中char类型在内存空间中占2个字节并且没有符号位,表示的范围是:0~65535,由于现实生活中很少有数据能够被单个字符描述,因此以后的开发中更多的使用由多个字符串起来组成的字符串,使用String类型加以描述。

计算机的底层只识别0和1组成的二进制序列,对于字符‘a’这样的图案来说不满足该规则,因此该数据无法直接在计算机中存储,但现实生活中存在这样的图案数据需要计算机存储,为了使得该数据能够存储起来就可以给该数据指定一个编号,然后将编号存储起来。

java字符类型采用unicode字符集编码。unicode是世界通用的定长字符集,所有字符都是16位。

\t 制表符 \n换行符

/*
 编程实现字符类型的使用
 */
public class CharTest {

  public static void main(String[] agrs) {

    //1.声明一个char类型的变量并初始化
    char c1 = 'a';
    //2.打印变量的数值
    System.out.println("c1 = " + c1);//c1 = a
    System.out.println("a对应的编号是:" + (int)c1);//a对应的编号是:97 表示将char类型的c1强制转换为int类型并打印
    char c2 = 98;
    System.out.println("c2 = " + c2);//c2 = b
    System.out.println("对应的编号是:" + (int)c2);//对应的编号是:98
    //3.特殊字符的使用 双引号本身有两个含义:a.字符串开头和结尾的标志 b.双引号本身 \转义字符转换为原有的含义
    System.out.println("我想过过\"过过\"过过的生活");
  }
}

(2)引用数据类

数组,类,接口,枚举,标注。

在计算机中单个字节表示八位二进制位,其中最高位代表符号位,使用0代表非负数,使用1代表负数,具体表示的整数范围如下:

非负数表示范围:0000 0000 ~ 0111 1111 =>0 ~ 127 =>0~2^7-1

负数表示范围:1000 000 ~ 1111 1111 =>-128 ~ -1 => -2^7~-2^0

单个字节所能表示的整数范围:-128~127


进制之间的转换

正十进制转化为二进制(0b/0B可以作为二进制的前缀):1.除二取余法:使用十进制整数不断的除以2取出余数,直到商为0时将余数逆序排列。     2.拆分法:将十进制整数拆分为若干个二进制权重的和,有该权重下面写1,否则写0.

 正二进制转换为十进制的方式:1.加权法:使用二进制中每个数字乘以当前位置的权重累积相加。

负十进制转换为二进制:1.先将十进制的绝对值转换为二进制,然后进行按位取反再加一。

例:-45转换为二进制:1.十进制绝对值45转换为二进制:0010 1101。 2.按位取反:1101 0010    3.再加1:1101 0011

验证:-45: 1101  0011  

              45:0010  1101    

               1  0000 0000 (高位溢出,丢弃)               -45+45=0

负二进制转换为十进制的方式:1.先减1再按位取反,合并为十进制整数后添加负号。

负二进制1101  0011转换为十进制的结果是:

先减1:1101  0010

按位取反:0010  1101

转为十进制:32+8+4+1=45

添加负号:-45

基本数据类型之间的转换

java语言中基本数据类型之间的转换方式:自动类型转换(小类型到大类型转换)和强制类型转换。

自动类型转换(小类型到大类型转换)byte-->short-->int-->long-->float-->double

强制类型转换是从大类型到小类型的转换,语法格式:目标类型 变量名 = (目标类型)原类型变量名

/*
 编程实现基本数据类型之间的转换
 */
public class CharTest {

  public static void main(String[] agrs) {
    //1.声明两个变量并初始化
    byte b1 = 10;
    short s1 = 20;
    //2.打印变量的值
    System.out.println("b1 = " + b1);//b1=10
    System.out.println("s1 = " + s1);//s1=20
    //3.实现自动类型转换的使用
    //表示将变量b1的数值赋值给变量s1 小到大转换
    //s1 = b1;
    //System.out.println("s1 = " + s1);//s1=10
    //4.实现强制类型转换
    s1 = 128;//128:0000 0000 1000 0000=>1000 0000=>0111 1111=>1000 0000=>128=>-128
    b1 = (byte)s1;
    System.out.println("b1 = " + b1);//b1 = -128
  }
}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你解答这个问题。下面是一个示例代码,可以实现你所要求的功能: ```java import java.util.Scanner; public class Student { private String name; private int age; private String gender; public Student(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } public String getName() { return name; } public int getAge() { return age; } public String getGender() { return gender; } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入学生人数:"); int count = scanner.nextInt(); Student[] students = new Student[count]; for (int i = 0; i < count; i++) { System.out.println("请输入第" + (i+1) + "个学生的信息:"); System.out.print("姓名:"); String name = scanner.next(); System.out.print("年龄:"); int age = scanner.nextInt(); System.out.print("性别:"); String gender = scanner.next(); students[i] = new Student(name, age, gender); } System.out.println("输入的学生信息如下:"); for (int i = 0; i < count; i++) { System.out.println("姓名:" + students[i].getName() + ",年龄:" + students[i].getAge() + ",性别:" + students[i].getGender()); } } } ``` 这段代码中,我们先定义了一个 `Student` 类,包含了学生的姓名、年龄、性别三个属性,以及一个构造方法用于初始化这些属性。然后在 `main` 方法中,我们使用 `Scanner` 类来读取用户输入的信息,循环创建了 `count` 个学生对象,并保存在一个数组中。最后再循环遍历这个数组,输出每个学生的信息。 注意,在实际开发中,我们需要对用户输入的数据进行一些安全性检查和数据格式化处理,以保证程序的健壮性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值