java变量运算

java初体验

java变量运算

变量

  • 变量的概念

内存中的一个存储的区域
该区域的数据可以在同一类型的范围内不断的变化
变量时程序中最基本的存储单元,包含变量的类型、变量的名称和存储的值

  • 变量的作用:

用来在内存中保存数据

  • 使用变量时应该注意什么

java中每一个变量必须先进行声明,后使用
使用变量名来访问这块区域的数据
变量的作用域是其定义所在的一对{}中
变量只有在其作用域内才算有效
同一个作用域内,不可以定义重名的变量。

class VariableTest{
    public static void main(String[] args){
        //变量的定义
        int myage = 20;
        //变量的使用
        System.out.println(myage);
        int mynumber;
        //变量的声明
        mynumber = 1001;
        //变量的赋值
        System.out.println(mynumber);
        //变量必须先进行声明赋值后再进行使用
        //System.out.println(myclass);
//        java: 找不到符号
//        符号:   变量 myclass
//        位置: 类 variableTest
        //int myage = 22;不可以在同一个作用域内定义同名的变量。
//        java: 已在方法 main(java.lang.String[])中定义了变量 myage
    }
    public void method(){
        int myclass = 1;
        //变量是有作用域的,变量的使用要在一个作用域下进行
    }
}
  • 变量的分类–>按照数据类型分:
    对于每一种数据都定义了明确的具体的数据类型,在内存中分配了不同大小的内存空间

    基本数据类型:整数类型 浮点类型 字符型 布尔型
    引用数据类型:类 接口 数组 字符串
    在这里插入图片描述

基本数据类型
  • 整数类型:byte short int long

java各整数类型有固定的表数范围和字段长度,不受具体的OS的影响,用来保证java程序的可移植性。
java的整型常量默认为int型,声明long型常量时后面要加上大写或者小写的L
java程序中的变量通常定义为int型,除非不足以表示较大的数据,才使用long

  • 浮点类型
    浮点类型和整数类型相似,java浮点类型有固定的表数范围和字段长度,不受具体操作系统的影响
    浮点型常量有两种表示形式:

十进制数形式:5.12 512.0f
科学计数法形式:5.12e2 512E2 100E-2

float:单精度,尾数可以精确到7位有效数字,通常情况下,float的精度很难满足需求
double:双精度,精度时float的两倍,通常使用double
java的浮点型常量默认时double类型,声明float型常量时,后面需要加大写或者小写的F

  • 字符型char
    char型数据用来表示通常意义上的字符
    java中所有的字符都使用Unicode编码,所以一个字符可以存储一个字母,一个汉字或者时其他书面语的一个字符
    字符型变量的三种表现形式:

    字符型常量是用(’’)包含起来的单个字符
    Java中允许使用转义字符’'来将其后的字符转变为特殊字符型常量
    直接使用Unicode值来表示字符型常量
    char类型是可以进行运算的,因为它都有对应的Unicode编码

  • 常见的转义字符

\b退格符
\n换行符
\r回车符
\t制表符
\反斜线

class variableTest{
    public static void main(String[] args){
        //整型
        //整型:byte(1byte = 8 bit) short(2byte) int(4byte) long(8byte)
        //byte范围:-128~127
        byte b1 = 12;
        byte b2 = -128;
        //b2 = 128;//编译不通过,原因是因为超过了byte的数字范围
        System.out.println(b1);
        System.out.println(b2);
        //声明long型变量,必须以小写或者大写的L结尾
        short s1 = 128;
        int i1 = 1234;
        long l1 = 34567890L;
        System.out.println(l1);
        //通常定义整型变量的时候一般使用的都是int类型
        //浮点型float(4字节) double(8字节)
        //浮点型:表示带小数点的数值
        //float表示的数值的范围比long还要大
        double d1 = 123.3;
        System.out.println(d1 + 1);
        float f1 = 12.3f;//注意:定义float类型变量时,变量必须要用小写或者大写的f来结尾
        //java: 不兼容的类型: 从double转换到float可能会有损失
        System.out.println(f1);
        //通常定义浮点型变量的时候,使用的时double,原因是范围更大,精度更高
        //字符型:char(1字符=2字节)
        //定义char型变量,通常使用一对单引号
        char c1 = 'd';
        //c1 = 'Ab';//char类型只可以写一个字符
        //java: 未结束的字符文字
        System.out.println(c1);
        //表示方式:1.声明一个字符2.转义字符3.unicode进行表示
        char c5 = '\n';//换行符
        c5 = '\t';//制表符
        System.out.println("hello"+ " " + "world");
        System.out.println("hello" + c5);
        System.out.println("world");
        char c6 = '\u0043';
        System.out.println(c6);
        //布尔类型:true false
        //布尔类型的值通常用于条件判断、循环结构中使用
        boolean bb1 = true;
        System.out.println(bb1);
        boolean  ismarried = true;
        if(ismarried){
            System.out.println("你不可以参加单身party");
        }else{
            System.out.println("你可以多谈谈女朋友");
        }
    }
}

基本数据类型之间的运算规则:
前提:这里讨论的是7种的基本数据类型变量之间的运算,不包含boolean类型的

自动类型提升

byte、char、short --> int --> long --> float --> double
当容量小的数据类型的变量和容量大的数据类型的变量做运算时,结果自动提升为容量最大的数据类型
(容量大小值的是数的范围的大小)
特别的,当byte、char 、short这几个类型之间进行运算的时候,一定要用int来进行接收

package day03.dh;
public class VariableTest2 {
    public static void main(String[] args){
        byte b1 = 2;
        int i1 = 12;
        //byte b2 = b1 + i1;编译不通过
        int i2 = b1 + i1;
        System.out.println(i2);
        long l1 = b1 + i1;
        System.out.println(l1);
        float f = b1 + i1;
        System.out.println(f);
        short s1 = 123;
        double d1 = s1;
        System.out.println(d1);
        char c1 = 'a';
        int i3 = 10;
        int i4 = c1 + i3;
        System.out.println(i4);
        short s2 = 10;
//        char c2 = c1 + s2;
//        char c4 = c1 + b2;
    }
}
强制类型转换

强制类型转换:自动类型提升的逆运算
1.需要使用强转符()
2.注意点:强制类型的转换,可能会导致精度损失

package day03.dh;
public class VariableTest3 {
    public static void main(String[] args) {
        double d1 = 12.3;
        int i1 = (int) d1;//截断操作
        System.out.println(i1);
        //没有精度损失
        long l1 = 123;
        short s2 = (short) l1;
        //精度损失
        int i2 = 128;
        byte b = (byte) i2;
        System.out.println(b);
    }
}

同时也具有一些特殊的情况:

package day03.dh;
public class VariableTest3 {
    public static void main(String[] args) {
        double d1 = 12.3;
        int i1 = (int) d1;//截断操作
        System.out.println(i1);
        //没有精度损失
        long l1 = 123;
        short s2 = (short) l1;
        //精度损失
        int i2 = 128;
        byte b = (byte) i2;
        System.out.println(b);
    }
}
引用数据类型
  • String
    String不是基本的数据类型,它属于引用数据类型
    使用的方式和基本数据类型是一致的。
    String类型变量的引用:

格式是:String 变量名 = “变量值”;

一个字符串可以串接另一个字符串,也可以直接串接其他类型的数据
String可以和8种基本的数据类型变量做运算,且运算只能是连接运算,并且运算的结果只能是String类型,但是String类型这里不能转换为类似于int float double 类型,但是可以通过特殊的方法进行转换

package day03.dh;
public class StringTest {
    public static void main(String[] args){
        String s1 = "hello world";
        System.out.println(s1);
        String s2 = "a";
        String s3 = "";
//      char c = '';//必须要放置字符
        int number = 1001;
        String numberStr = "学号:";
        String info = numberStr + number;//+ 连接运算
        String info1 = info + true;
        System.out.println(info);
        System.out.println(info1);
        char c = 'a';//97 A:65
        int num = 10;
        String str = "hello";
        System.out.println(c + num + str);//107hello
        System.out.println(c + str + num);//ahello10
        System.out.println(c + (num + str));//a10hello
        System.out.println((c + num) + str);//107hello
        System.out.println((str + num + c));//hello10a
        String str1= 123 + "";
        System.out.println(str1);
        //int num1 = (int)str1;java: 不兼容的类型: java.lang.String无法转换为int
        int num1 = Integer.parseInt(str1);
        System.out.println(num1);
    }
}
进制和进制转换
  • 常用的进制
    所有的数字在计算机的底层都是以二进制的形式存在的
    那么对于整数来讲,常见的有这几种表示方式:

二进制(binary):0或者1,满2进1,统一使用0b或者是0B开头
十进制(decimal):0-9,满10进1
八进制(octal):0-7,满8进1,数字以0开头进行表示
十六进制(hexadecimal):0-9和A-F,满16进1,以0x或者是0X开头,此处的A-F不区分大小写

package day03.dh;
/*
 计算机中不同进制的说明
 */
public class BinaryTest {
    public static void main(String[] args){
        int num1 = 0b110;//二进制
        int num2 = 110;//十进制
        int num3 = 0127;//八进制
        int num4 = 0x110A;//十六进制
        System.out.println("num1 = " + num1);
        System.out.println("num2 = " + num2);
        System.out.println("num3 = " + num3);
        System.out.println("num4 = " + num4);
    }
}
  • 进制转换
    以最常用的二进制和十进制之间互换为例(采用的是位权加减法):
    第一行是十进制,第二行是二进制

在这里插入图片描述

也就是十进制转换为二进制:将数大的一方减去比它小的十进制,对应的二进制写1.

比方说13的二进制是:0000 1101,254的二进制是1111 1110

十进制转换为二进制称为编码,二进制转换为十进制称为解码。

我们输入的数据转换为二进制之后由计算机接收,计算机会将二进制进行解码,每8位二进制数据分析一次转换为十进制
在这里插入图片描述
在计算机底层都是以补码的方式来存储数据。
java运算符

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_45671732

你们鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值