变量

不想你离开。 提交于 2019-11-28 10:38:59

变量

什么是变量?

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

实例:

 

/*2019这是一个数字,代表某年。如果命名它:*/

int year=2019;
/*
int:是数据类型,表示是整数
year:是一个标示符
=:是赋值操作符
2019:是一个数字类型的值
; :表示该行结束
*/
View Code

 

 

 

 基本变量类型

一个变量的类型,决定了该变量可以包含什么样的值。

Java种有八种基本类型,都是Java语言预先定义好的,并且是关键字。

这八种基本类型分别是:

整型(4种)

字符型(1种)

浮点型(2种)

布尔型(1种)

整型

整型用于存放整数:byte、short、int、long

区别在于不同类型的整型,最大值,最小值不一样。

如果byte类型的变量赋予超出其范围的值,就会编译错误,这时就需要进行类型转换。

实例:

public class Zx{
    public static void main(String[] args){
        byte=1;
        short s=200;
        int i=300;
        long=400;
        /*如果试图给byte类型的变量赋予超出其范围的值,就会产生编译错误*/
        byte b2=200;
    }
}
View Code

 

 

字符型

 char 类型用于存放一个字符,值用但因号表示(双引号表示字符串类型)其长度和short一样,也是16位。

只能存放一个字符,否则就会编译报错。

实例:

 

public class Zfc{
    public static void main(String[] args){
        char a='一';
        //char只能存放一个字符,超过就会产生编译错误。
        char b=‘一二’;//报错
        char c='ab';//报错
    }
}
View Code

 

 

 

 浮点型

浮点型类型有两种

float长度为32位

double 长度为64位

注意:

默认的小数值是double类型的。

实例:

 

public class Fd{
    pbulic static void mian(String[] args){
        double a=123.45;
        //该行会出现编译错误,因为54.321是double型的。
        floar b=54.321;
        float c=54.321f;
    }
}
View Code

 

 

 

 

 布尔型

布尔型用于i表示真假,长度为1。

虽然布尔型真正存放的数据是0(fasle)、1(true),但是不能直接使用0、1进行赋值。

实例:

public class Be(){
    public static void main(String[] args){
        boolean a=true;
        boolean b=false;
        //虽然布尔型真正存放的数据是0、1,但是不能直接使用0、1进行赋值。
        boolean c=1;
    }
}
View Code

 

String型

 String类型其实并不是基本类型,但是它是如此广泛的被使用,常常被误认为是一种基础类型。

String类型是Immutable的,一旦创建就不能被改变。

实例:

public class Sr{
    public static void main(Stirng[] args){
        String a="我是你爸爸":
    }
}
View Code

 

练习:

分别为如下值,找到合适的类型来定义
3.14
2.769343
365
12
'吃'
false
"不可描述"

操作:

public class Zy{
    public static void mian(String[] args){
        double a=3.14;
        double b=3.14;
        int c=365;
        byte d=14;
        char e='吃';
        String f="不可描述";
    }
}
View Code

 

 

变量之子面值

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

 整数字面值

当以l或者L结尾的时候,一个整数字面值是long类型,否则就是int类型。建议使用大写的L而非小写的l,因为容易和1混淆。

byte、short、int、long的值都可以通过int类型的字面值来创建。整数的字面值可以是四种进制表示:

十进制:基10,包含0-9的数字,平常用的就是这种。

十六进制:基16,包含从0-9的数字,和从A-F的字母。

八进制:基8,包含0-7的数字。

二进制:基2,包含0和1。(从Java7开始就可以创建二进制的字面值了)

 实例:

public class ZsZm{
    public static void main(){
        long val=26L;//以L结尾的字面值表示long型
        int decVal=26;//默认int型
        int hexVal=0x1a;//16进制
        int pxVal=032;//8进制
        int binVal=0b11010;//2进制
        System.out.println(oxVal);
    }
}
View Code

 

 

 

浮点数字面值

当以f或者F结尾的时候,就表示一个float类型的浮点数,否则就是double类型(以d或者D结尾,写不写都可以)。

浮点数还可以用E或者e表示(科学计数法)

实例 :

public class FdZm{
    public static void mian(String[] args){
        float f1=123.4F;//以F结尾的字面值表示float类型
        double d1=123.4;//默认就是double类型
        douvle d2=1.234e2;//科学计数法表示double
    }
}
View Code

 

 

 字符和字符串字面值

 字符的字面值放在单引号中。

字符串的字面值放在双引号中。

注意:

\表示转义,比如需要表示制作表,回车转义,双引号等就需要用\t\r\n\"的方式进行。

实例:

 public class ZfZM{
 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 = '\\'; //反斜杠        
    }
}
View Code

 

 

 练习:

定义如下变量,然后为每种不同类型的变量赋予合法的字面值
byte b;
short s;
int i;
long l;
float f;
double d;
char c;
String str;

 

 操作:

public class  Lx{
    public static void main(String[] args){
        byte b=12;
        short s='无';
        int i= 54;
        long l= 894L;
        float f= 115F;
        double d= 245;
        char c='恶';
        String str="电竞我";
    }
}
View Code

 

 类型转换

转换规则: 

精度高的数据类型就像容量大的杯子,可以放更大的数据。

精度底的数据类型就像容量小的杯子,只能放更小的数据。

精度小往精度大转换,是可以放下(即可转换);

精度大往精度小转换,有时候能放下,有时候不能放下。

注意:

虽然short和char都是16位的,长度一样的,但是它们之间,还是要需要进行强制转换的。 

 

实例:

public class Lx{
    public static void main(String[] args){
        char a='A';
        short b=80;
        //虽然short和char都是16位,长度一样,
        //但是他们之间,依然需要进行强制转换
        a=(char)b;
        //直接进行转换,会编译错误
        b=a;
    }
}

 

 低精度向高精度转换

long l = 50;
int i = 50;

 

l 是long类型的,其类型长度是64位
i 是int类型的,其类型长度是32位
所以l的精度,比i的精度要高
l = i;
把i的值赋给l, 首先l和i彼此的类型是不一样的,那么能否转换就取决于彼此的精度
这个例子,是低精度向高精度转换 是可以正常转换的
换句话说,int比较小,要放进比较大的long,随便怎么样,都放的进去

 

 

实例:

public class Dg{
    public static void main(String[] args){
        long l=50;
        int i=50;
        //int小,要放进大的long,不管怎样,都放的进去
        l=i;
    }
}
View Code

 

 

 高精度向低精度转换

 

byte b = 5;
int i1 = 10;
int i2 = 300;
b = i1;
b=i2;

 

 b的类型是byte,其长度是8,最大只能放127
i1 的类型是int, 其长度是32,最大,反正就是很大了,超过127
所以, 把int类型的数据转成为byte类型的数据,是有风险的
有的时候是可以转换的,比如 b = i1 (i1=10);
有的时候不可以转换 比如 b= i2 (i2=300) 因为放不下了
编译器就会提示错误
这个时候就只能采用强制转换,强制转换的意思就是,转是可以转的,但是不对转换之后的值负责。 风险自担,后果自负

 

实例:

public class Gx{
    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位进行截取,其值位0010110 即44
        b=(byte)i2;
        System.out.println(b);
        //查看一个整数对应的二进制方法:
        System.out.println(Integer.toBinaryString(i2));
        ]
    }
View Code

 

 练习:

short a = 1;
short b = 2;
那么 a+b 是什么类型?

 

 操作:

public class Two{
    public static void main(String[] args){
        short a=1;
        short b=2;
        short c=(short) (a+b);
        System.out.println(c);
    }
}

命名规则 

变量名值匿名使用字母、数字、s_

变量第一个字符 只能使用 字母$_

变量第一个字符不能使用数字

注意:

_是下划线,布是-减号或者——破折号

使用完整的单词命名,而非缩写

不能只使用关键字,但是可以包含关键字

练习:

 int a_;
 int a@;
 int a3;
 int 8@;
 int 9_;
 int X$_;
 int y;
 int _$_;
 int $_$;
 int $*$;
 int $1$;
 int _1_;
 int _@_;
 int a#;
 int a";
int 123a";
int 123a_;
 int $123b_;

 

作用域

当一个变量被声明在类下面
变量就叫做字段 或者属性、成员变量、Field
比如变量i,就是一个属性。
那么从第2行这个变量声明的位置开始,整个类都可以访问得到。
所以其作用域就是从其声明的位置开始的整个类。

字短、属性、Field

当一个变量被声明在类下面

变量就叫做字段或者属性、成员变量、Field

实例:

public class Mm{
    public static void main(String[] args){
        int i=1;
        int j=i;//其他属可以访问i
        public void A(){
            System.out.println(i);//可以访问i
        }
        public void B(){
            //方法2里可以访问
            System.out;pingtln(i);}
    }
}
View Code

 

参数

 如果一个变量,是声明在一个方法上的,就叫做参数
参数的作用域即为该方法内的所有代码
其他方法不能访问该参数
类里面也不能访问该参数

 实例:

public class Cs{
    public void method1(int i){ //参数i的作用域即方法method1
        System.out.println(i);
    }
    public void method2(){
        System.out.println(i); //method2 不能访问参数i
    }
    int j = i;  //类里面也不能访问参数i
}
}
View Code

 

 局部变量

 声明在方法内的变量,叫做局部变量 
其作用域在声明开始的位置,到其所处于的块结束位置

实例:

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行就结束了
    }
 
}
View Code

 

练习:

public class HelloWorld {
    int i = 1; //属性名是i
    public void method1(int i){ //参数也是i
        System.out.println(i);
    }
     
    public static void main(String[] args) {
        new HelloWorld().method1(5);
        //结果打印出来是 1还是5?
    }
}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!