定义double型变量_java学习(五):变量

本文讲解java中变量的一些概念及原则。 1)变量的定义

变量是用来命名一个数据的标识符。

public class HelloWorld {  public static void main(String[] args) {//    int 是数据类型,表示是整数//    year 是一个标识符//    = 是赋值操作符//    1949 是一个数字类型的值//    ; 表示该行结束    int year = 1949;  }}
2)变量的基本类型一个变量的类型,决定了该变量可以包含什么样的值。Java中有八种基本类型,都是Java语言预先定义好的,并且是关键字。

这八种基本类型分别是:

整型   (4种):byte(8位)\short(16位)\int(32位)\long(64位)
区别在于不同类型的整型,其所允许的最大值和最小值不一样如果试图给byte类型的变量赋予超出其范围的值,就会产生编译错误,这个时候就需要进行类型转换public class HelloWorld{  public static void main(String[] args){      byte b = 1;      short s = 200;      int i = 300;      long l = 400;            /*如果试图给byte类型的变量赋予超出其范围的值,就会产生编译错误*/      byte b2 = 200;  }}
字符型(1种):char
char类型用于存放一个字符,值用单引号'表示 (双引号表示字符串)其长度和short一样,也是16位的只能存放一个字符,超过一个字符就会产生编译错误public class HelloWorld{    public static void main(String[] args){      char c = '中';      //char 只能存放一个字符,超过一个字符就会产生编译错误      char c2 = '中国'; //报错      char c3 = 'ab'; //报错  }}
浮点型(2种):float\double
浮点数类型有两种:float(长度为32位)和double(长度为64位)注意:默认的小数值是double类型的所以,float f = 54.321会出现编译错误,因为54.321的默认类型是 double,其类型长度为64,超过了float的长度32。在数字后面加一个字母f,直接把该数字声明成float类型,float f2 = 54.321f,这样就不会出错了。public class HelloWorld{    public static void main(String[] args){      double d = 123.45;         //该行会出现编译错误,因为54.321是double型的      float f = 54.321;       float f2 = 54.321f;     }}
布尔型(1种):boolean
布尔型用于表示真假,其长度为1public class HelloWorld {    public static void main(String[] args) {        boolean b1 = true;        boolean b2 = false;        // 虽然布尔型真正存放的数据是0(false) 1(true)        // 但是,不能直接使用0 1 进行赋值        boolean b3 = 1;    }}
String类型
String类型其实并不是基本类型,但是它是如此广泛的被使用,常常被误以为是一种基本类型。String类型是不可变的,一旦创建就不能够被改变。public class HelloWorld {    public static void main(String[] args) {        String str = "Hello Java";    }}
3)字面值

创建一个Hero对象会用到new关键字,但是给一个基本类型变量赋值却不是用new. 因为基本类型是Java语言里的一种内置的特殊数据类型,并不是某个类的对象。

给基本类型的变量赋值的方式叫做 字面值。

float hp = 313f;int armor = 24;1)整数的字面值public class HelloWorld {    public static void main(String[] args) {//      当以l或者L结尾的时候,一个整数字面值是long类型,否则就是int类型。//      建议使用大写的L而非小写的l,因为容易和1混淆。        long val = 26L; //以L结尾的字面值表示long型        int decVal = 26; //默认就是int型        int hexVal = 0x1a; //16进制        int oxVal = 032; //8进制        int binVal = 0b11010; //2进制        System.out.println(oxVal);    }}2)浮点数的字面值public class HelloWorld {    public static void main(String[] args) {//      当以f或者F结尾的时候,就表示一个float类型的浮点数,否则就是double类型(以d或者D结尾,写不写都可以)。//      浮点数还可以用E或者e表示(科学计数法)            float f1 = 123.4F;// 以F结尾的字面值表示float类型        double d1 = 123.4;// 默认就是double类型        double d2 = 1.234e2;// 科学计数法表示double    }}3)字符串字面值public class HelloWorld {//  字符的字面值放在单引号中//  字符串的字面值放在双引号中//  \表示转义,比如需要表示制表符、回车换行、双引号等就需要用 \t \r \n \" 的方式进行    public static void main(String[] args) {        String name = "盖伦";        char a= 'c';         //以下是转义字符        char tab = '\t'; //制表符        char carriageReturn = '\r'; //回车        char newLine = '\n'; //换行        char doubleQuote = '\"'; //双引号        char singleQuote = '\''; //单引号        char backslash = '\\'; //反斜杠      }}
4)类型转换

不同类型之间的数据可以互相转换,但是要满足一定的规则

精度高的数据类型就像容量大的杯子,可以放更大的数据        精度低的数据类型就像容量小的杯子,只能放更小的数据         小杯子往大杯子里倒东西,大杯子怎么都放得下         大杯子往小杯子里倒东西,有的时候放的下,有的时候就会有溢出         需要注意的一点是:虽然short和char都是16位的,长度是一样的                                          但是彼此之间,依然需要进行强制转换

569b05cc29b38d975e3a360c4878eeb3.png
1)short和char之间的类型转换public class HelloWorld {    public static void main(String[] args) {        char c = 'A';        short s = 80;                     //虽然short和char都是16位的,长度是一样的        //但是彼此之间,依然需要进行强制转换        c = (char) s;        //直接进行转换,会出现编译错误        s = c;        }}2)long和int之间的类型转换l 是long类型的,其类型长度是64位i 是int类型的,其类型长度是32位所以l的精度,比i的精度要高把i的值赋给l,首先l和i彼此的类型是不一样的,那么能否转换就取决于彼此的精度这个例子是低精度向高精度转换,是可以正常转换的换句话说,int比较小,要放进比较大的long,随便怎么样,都放的进去public class HelloWorld {    public static void main(String[] args) {        long l = 50;        int i = 50;                 //int比较小,要放进比较大的long,随便怎么样,都放的进去        l = i;        }}b的类型是byte,其长度是8,最大只能放127i1 的类型是int,其长度是32,最大肯定超过127所以,把int类型的数据转成为byte类型的数据,是有风险的有的时候是可以转换的,比如 b = i1 (i1=10)有的时候不可以转换,比如 b= i2 (i2=300),因为放不下了,编译器就会提示错误这个时候就只能采用强制转换。强制转换的意思就是,转是可以转的,但是不对转换之后的值负责。public class HelloWorld {    public static void main(String[] args) {        byte b = 5;        int i1 = 10;        int i2 = 300;                  b = (byte) i1;        //因为i1的值是在byte范围之内,所以即便进行强制转换        //最后得到的值,也是10        System.out.println(b);                  //因为i2的值是在byte范围之外,所以就会按照byte的长度进行截取        //i2的值是300,其对应的二进制数是 100101100        //按照byte的长度8位进行截取后,其值为 00101100 即44        b =(byte) i2;        System.out.println(b);                 //查看一个整数对应的二进制的方法:        System.out.println(Integer.toBinaryString(i2));       }}
5)java的命名规则变量命名必须满足一系列的条件,不能随意命名。
变量命名只能使用字母、数字、$和_变量第一个字符只能使用字母、$和_,不能使用数字    int a= 5;    int a_12= 5;    int $a43= 5;    int a434= 5;     int 34a= 5; //第一个是数字,是不行的在命名的时候,尽量使用完整的单词进行命名,比如name,moveSpeed,而不是使用缩写 n,m。    //使用完整单词命名,易于理解    String name;    float hp;     float armor;    int moveSpeed已经被java 赋予了特殊的含义的单词就是关键字,不能直接用来作为变量名,但是可以包含关键字    int class5 = 5;    注:中文也是可以用来命名变量的,但是在实际工作中别这么干
6)变量的作用域

变量处于不同的位置,有不同的名称。不同名称的变量,其作用域是不一样的。这些名称包括:

                     字段\属性(定义在类内部)
                                参数(方法的输入)
                                局部变量(定义在方法内部)

1)当一个变量被声明在类下面,变量就叫做字段 或者属性、成员变量、Field   从这个变量声明的位置开始,整个类都可以访问得到,所以其作用域就是从其声明的位置开始的整个类public class HelloWorld {    int i = 1;    int j = i;   //其他的属性可以访问i    public void method1(){        System.out.println(i); //方法1里可以访问i    }    public void method2(){        System.out.println(i); //方法2里可以访问i    }}2)如果一个变量,是声明在一个方法上的,就叫做参数   参数的作用域即为该方法内的所有代码,其他方法不能访问该参数,类里面也不能访问该参数public class HelloWorld {    public void method1(int i){ //参数i的作用域即方法method1        System.out.println(i);    }        public void method2(){        System.out.println(i); //method2 不能访问参数i    }        int j = i;  //类里面也不能访问参数i}3)声明在方法内的变量,叫做局部变量   其作用域在声明开始的位置,到其所处于的块结束位置public class HelloWorld {    public void method1() {        int i  = 5;  //其作用范围是从声明的第4行,到其所处于的块结束12行位置        System.out.println(i);        {            //子块            System.out.println(i); //可以访问i            int j = 6;            System.out.println(j); //可以访问j        }        System.out.println(j); //不能访问j,因为其作用域到第10行就结束了    }}
7)final修饰的变量 当一个变量被final修饰的时候,该变量只有一次赋值的机会
public class HelloWorld {    public void method1() {        final int i = 5;        i = 10; //i在第4行已经被赋值过了,所以这里会出现编译错误    }}// 如果在声明的时候未赋值,那么可以在后面代码进行唯一的一次赋值public class HelloWorld {    public void method1() {        final int i;           i = 10; //i在第4行,只是被声明,但是没有被赋值,所以在这里可以进行第一次赋值           i = 11; //i在第6行已经被赋值过了,所以这里会出现编译错误       }}

参考:https://how2j.cn/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值