ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

尚学堂高淇讲基础02

2022-08-13 00:01:41  阅读:168  来源: 互联网

标签:02 变量 double float 高淇 学堂 boolean println 字节


尚学堂高淇讲基础02

1.变量(variable)

如果我们把一个软件、一个程序看做一座大楼的话,变量就是“砖块”,一个个“砖块”最终垒成了大厦。变量也是进入编程世界最重要的概念,本节从变量的本质开始讲解,让大家一开始就能抓住变量的核心。

image-20220812144756151

 

变量的本质

变量本质上就是代表一个”可操作的存储空间",空间位置是确定的,但是里面放置什么值不确定。我们可通过变量名来访问“对应的存储空间”,从而操纵这个“存储空间”存储的值。

Java是一种强类型语言,每个变量都必须声明其数据类型。变量的数据类型决定了变量占据存储空间的大小。

 

变量的声明

变量类似于停车场的车位。一个变量相当于一个停车位,我们通过停车位的名字找到对 应的“位置(空间)”。然后,确定上面停的是什么车。车类似于数据,是可变的

格式为:

 type varName [=value][,varName[=value]...];
 /[]中的内容为可选项,即可有可无
 数据类型变量名[=初始直[,变量名[=初始值].….];

示例:声明变量

 double salary
 long earthPo....
 int age

字节:8 8 4 byte 1字节 = 8bit

image-20220812145817542

 

 

局部变量在使用前需要初始化 也就是赋值

 

变量的分类和作用域

从整体上可将变量划分为局部变量、成员变量(也称为实例变量)和静态变量

从表中看三者区别:

类型声明位置从属于生命周期(作用域)
局部变量 方法或语句块内部 方法/语句块 从声明位置开始,直到方法或语句块执行完毕,局部变量消失
成员变量(实例变量) 类内部,方法外部 对象 对象创建,成员变量也跟着创建。对象消失,成员变量也跟着消失
静态变量(类变量) 类内部,static修饰 类被加载,静态变量就有效;类被卸载,静态变量就消失

 

2.常量和final

final 定义最终的值,不能改变

常量只能初始化一次

image-20220812161648355

经过final修饰的,我们一般称作常量

 public class Final {
     public static void main(String[] args) {
         final double PI = 3.14;
         double r = 3;
         double area = PI * r * r;
         double circe= 2*PI*r;
 ​
         System.out.println("面积是:"+area);
         System.out.println("周长是:"+circe);
    }
 }

为了更好的区分和表述,一般将1、2、3、' a’ .' b’ . true、false、" helloWorld"等称为字符常量,而使用final修饰的PI等称为符号常量。

 

3.基本数据类型

Java是一种强类型语言 每个变量都必须声明其数据类型

Java的数据类型可分为两大类∶

基本数据类型( primitive data type )和引用数据类型( reference data type )。

 

Java中定义了3类8种基本数据类型

  • 数值型- byte1、 short2、int4、 long8、float4、double8

  • 字符型-char

  • 布尔型- boolean

image-20220812164935593

一个字节,是8位,2的8次方

四个字节,是32位,2的32次方

 

整型

image121212

浮点型

不精确,有误差的

带小数的数据在Java中称为浮点型。浮点型可分为float类型和double类型。

这里E38 代表 -3.403*10的38次方

类型占用存储空间表数范围
float 4字节 -3.403E38~3.403E38
double 8字节 -1.798E308~1.798E308

float类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求。而double表示这种类型的数值精度约是float类型的两倍,又被称作双精度类型,绝大部分应用程序都采用double类型。

 java浮点类型常量有两种表示形式
     十进制数形式,例如:3.14    314.0   0.314
     科学计数法形式,如3.14E0   3.14E2  3.14E-1
           3.14*10的2次方       3.14*10的-1次方

float类型的数值有一个后缀F或者f ,没有后缀F/f的浮点数值默认为double类型。也可以在浮点数值后添加后缀D或者d,以明确其为double类型。

需要金融计算的话,需要使用BigDecimal类

 老鸟建议
  浮点类型float, double的数据不适合在不容许舍入误差的金融计算领域。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。
 public class Float {
     public static void main(String[] args) {
         double a = 3.14;
         double b = 3.14E2;
         System.out.println(b); //科学计数法表示小数
 ​
         //float f1 = 1.35; //会报错1.35是double类型的浮点常量,不能直接赋值给float
         float f2 = 1.35F;
 ​
         //浮点数是不精确的,尽量不要直接用于比较
         float c = 0.1F;
         double d = 1.0/10;
         System.out.println(c);
         System.out.println(c==d); //一个等是赋值,两个等是比较运算   false
 ​
 ​
         float e = 212312313123L;
         float f = e+1;
         System.out.println(e==f);//true
 ​
    }
 }

 

字符型

字符型在内存中占2个字节,在Java中使用单引号来表示字符常量。例如’A’是一个字符,它与”A”是不同的,”A”表示含有一个字符的字符串。 char类型用来表示在Unicode编码表中的字符。Unicode编码被设计用来处理各种语言的文字,它占2个字节,可允许有65536个字符。

 \uFFFF   :  
  每两个FF代表两个字节   前两个FF代表256  后两个一样

 

Unicode具有从0到65535之间的编码,他们通常用从’\u0000’到\uFFFF’之间的十六进制值来表示(前缀为u表示 Unicode )

char是一个字符,一个字节 --你可以定义char a = '中' 但是定义‘中国’就会报错

 public class Char {
     public static void main(String[] args) {
         char c1 = 'a';
         char c2 = '中';
         char c3 = '\u0061';
 ​
         System.out.println(c1);
         System.out.println(c2);
         System.out.println(c3);
 ​
         char a = '\n';
         System.out.println("你好,换行谢谢"+a+"真听话");
    }
 }

 

4.boolean布尔型 _if语句使用要点+布尔值占用空间问题(一般情况下4个字节,数组下占一个字节)

boolean类型有两个常量值,true和false,在内存中占一个字节或4个字节,不可以使用О或非О的整数替代true 和false ,这点和C语言不同。boolean类型用来判断逻辑条件,一般用于程序流程控制。

测试boolean

 public class Boolean {
     public static void main(String[] args) {
         boolean flag = true;
 ​
         if (flag){
             System.out.println("boolean是true");
        }else {
             System.out.println("boolean是false");
        }
    }
 }
 老乌建议
  Less is More ! !请不要这样写:if ( flag = = true ),只有新手才那么写。关键也很容易写错成if(flag=true),这样就变成赋值flag 为true而不是判断!老鸟的写法是if ( flag )或者if ( !flag)

 

关于boolean类型 几个字节的说明:

在《Java虚拟机规范》一书中的描述︰“虽然定义了boolean 这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的 byte数组,每个元素boolean元素占8位”。也就是说JVM规范指出 boolean当做int处理,也就是4字节,boolean数组当做byte数组处理,这样我们可以得出boolean类型占了单独使用是4个字节,在数组中是确定的1个字节。

 

5.运算符

%取余 ++ 自增 --自减 赋值运算符

image-20220812233010849

 

算数运算符

算术运算符中+,-,*,/,%属于二元运算符,二元运算符指的是需要两个操作数才能完成运算的运算符。其中的%是取模运算符,就是我们常说的求余数操作。

二元运算符的运算规则:

整数运算:

  • 如果两个操作数有一个为Long,则结果也为long.

  • 没有long时,结果为int。即使操作数全为short , byte,结果也是int。

浮点运算:

  • 如果两个操作数有一个为double ,则结果为double。

  • 只有两个操作数都是float,则结果才为float。

取模运算:

  • 其操作数可以为浮点数,一般使用整数,结果是“余数”,"余数”符号和左边操作数相同,如:7%3=1 ,-7%3=-1,7%-3=1。

 

测试运算符

标签:02,变量,double,float,高淇,学堂,boolean,println,字节
来源: https://www.cnblogs.com/wangshikang/p/16581760.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有