变量

变量

1. 什么是变量

变量的定义是:用来命令一个数据的标识符

int year = 1949;

int 是数据类型,表示整数

year 是一个标识符

= 赋值操作符

1949 是一个数字类型的值

; 表示该行结束

public class HelloWorld{
    public static void main(String[] args){
        int year = 1949;
    }
}

2. 变量的基本类型

  • 整型

类型 缺省值 长度 数的范围
byte 0 8 -128 ~ 127
short 0 16 -32768 ~ 32767
int 0 32 -2147483648 ~ 2147483647
long 0 64 -9223373036854775808 ~ 9223373036854775807
public class HelloWorld{

    public static void main(Stirng[] args){
        byte b = 1;
        short s = 200;
        int i = 300;
        long l = 400;
        //如果试图给byte类型的变量赋超出范围的值,会产生编译错误
        byte b2 = 200;
    }
}
  • 字符型

char类型用于存放一个字符,用单引号表示(双引号用于表示字符串)4

长度和short一样,16位

public class HelloWorld{

    public static void main(String[] args){
        char c = '中';
        // char只能存一个字符,超过一个就会报错
        char c2 = '中国';
        char c3 = 'ab';
    }
}
  • 浮点型

浮点型有两种类型,float(32位)double(64位)

注意默认的小数值都是double类型

所以 float f = 54.321会出现编译错误,因为54.321的默认类型是 double,其类型 长度为64,超过了float的长度32
在数字后面加一个字母f,直接把该数字声明成float类型
float f2 = 54.321f,这样就不会出错了

类型 缺省值 长度 数的范围
float 0.0 32 3.4E-38 ~ 3.4E38
double 0.0 64 1.7E-308 ~ 1.7E308
public class HelloWorld{

    public static void main(String[] args){
        double d = 123.45;
        // 下面的编译会出错,因为默认是double类型
        float f = 123.45;
        // 下面这种才是正确的
        float f = 123.45f;
    }
}
  • 布尔型

布尔值用来表示真假,长度为1

虽然布尔值真正存放的是0和1,但是不能使用0和1来进行赋值。必须使用true和false赋值

类型 缺失值 长度 数的范围
boolean false 1 false、true
public class HelloWorld{

    public static void main(String[] args){

        boolean b1 = true;
        boolean b2 = false;
        //不能直接用0和1进行赋值
        boolean b3 = 1;
    }
}
  • String类型(不是基本类型)

String类型其实并不是基本类型,但是如此广泛被使用,常被误以为是一种基本类型。
String类型是Immutable的,一旦创建就不能够被改变

public class HelloWorld{

    public static void main(String[] args){
        String str = "Hello Java"
    }
}

3. 什么是Java的字面值

创建一个Hero对象会用到new关键字,但是给一个基本类型变量赋值却不用new

因为基本类型是Java语言中一种内置的特殊数据类型,并不是某个类的对象

给基本类型的变量赋值的方式叫做字面值,例如:

float hp = 313f;
int armor = 24;

整数字面值

当以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 HelloWorld{
    public static void main(String[] args){
        long val = 26L;
        int decVal = 26;
        int hexVal = 0x1a;
        int oxVal = 032;
        int binVal = 0b11010;
        System.out.println(oxVal);
    }
}

浮点数字面值

当以f或者F结尾的时候,就表示一个float类型的浮点数,否则就是double类型

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

e2表示10的二次方,即100

1.234e2 = 1.234x100

public class HelloWorld {

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

字符和字符串字面值

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

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

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

public class HelloWorld {

    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. 类型转换

转换规则

装的少的数据类型往装的多的数据类型转,没有问题

装的多的数据类型往装的少的数据类型转,可能会有问题。

public class HelloWorld{
    public static void main(String[] args){
        char c = 'A';
        short s = 80;
        //虽然char和short都是16位,长度是一样的
        //但是彼此之间,依然需要进行强制转换
        c = (char)s;
        s = c;
    }
}

低精度向高精度转换

public class HelloWorld {

    public static void main(String[] args) {

        long l = 50;
        int i = 50;
        //int比较小,要放进比较大的long,随便怎么样,都放的进去
        l = i;
    }
}

高精度向低精度转换

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 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变量的命名规则

命名规则

变量命只能使用字母、数字、$和 _

第一个字符不能使用数字

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

在命名的时候,尽量使用完整的单词进行命名

比如name, nameSpeed,而不是n,m

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

什么是关键字?

比如int,short,class这种已经被Java赋予特殊含义的

但是可以包含,比如 int_6

关键字列表

异常处理:try、catch、finally、throw、throws

对象相关:new、extends、implements、class、instanceof、this、super

字面值常量:false、true、null

方法相关:return、void

包相关:package、import

未使用的:const、goto


基本数据类型:byte、short、int、long、float、double、char、boolean

循环关键字:do、while、for、break、continue

分支关键字:if、else、switch、case、default

方法、变量和类修饰符:private、public、protected、final、static、abstract、synchronized、transient、volatile、strictfp

中文也是可以用来命名的

但是别作死

6. Java变量的作用域

字段、属性、Field

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

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

比如变量 i 就是一个属性

那么从第二行声明这个变量的位置开始,整个类都可以访问该变量

其作用域就是从声明位置开始的整个类

public class HelloWorld{
    int i = 1;
    int j = i;
    public void method1(){
        System.out.println(i); //方法1中可以访问i
    }
    public void method2(){
        System,out.println(i);//方法2中也可以访问i
    }
}

参数

如果一个变量,是声明在一个方法上的,叫做参数

参数的作用域即为该方法内的所有代码

其他方法不能访问该参数

类里边也不能访问该参数

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

局部变量

声明在方法内的变量,叫做局部变量

作用域在声明开始的位置,到其所属的块结束的位置

public class HelloWorld{
    public void method1(){
        int i = 5;      //范围是4-10行
        System.out.println(i);
        {// 子块
            System.out.println(i);  //可以访问i
            int j = 6;
            System.out.println(j);  //可以访问j
        }
        System.out.println(j); //不能访问j
    }
}

7. Java中的final修饰变量

final修饰一个变量 = 该变量只有一次赋值的机会

在声明的时候赋值

public class HelloWorld{
    public void method1(){
        final int i = 5;
        i = 10; //在第三行已经赋值过,所以会编译出错
    }
}

在声明的时候没有赋值

如果在声明的时候没有赋值,可以在后面的代码中进行唯一的一次赋值

public class HelloWorld{
    public void method1(){
        final int i;
        i = 10;     //可以唯一一次赋值
        i = 11;     //编译会出错
    }
}

final修饰其他

final除了修饰变量,还可以修饰类、修饰方法等,之后会讲。

8. 什么是Java的表达式

以 ; 结尾的一段代码,即为一个表达式

public class HelloWorld {
    public static void main(String[] args) {
        //每一句话都是一个表达式
        int i = 5; 
        System.out.println(5);
    }
}

; 单纯一行,也算是一个完成的表达式

public class HelloWorld {
    public static void main(String[] args) {
        //一个空;也是一个表达式
        ;
        ;
        ;      
        ;
    }
}

9. 什么是Java的块

{ }中的内容就是一个块

public class HelloWorld { //类对应的块
    public static void main(String[] args) { //主方法对应的块
        System.out.println("abc");
    }
}
暂无评论

发送评论 编辑评论


				
上一篇
下一篇