变量

变量

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

 

 JAVA中有八种基本变量类型

一个变量的类型,决定了该变量可以包含什么样的值。 
Java中有八种基本类型,都是Java语言预先定义好的,并且是关键字。 

这八种基本类型分别是: 
整型 (4种) 
字符型 (1种) 
浮点型 (2种) 
布尔型(1种)

整型

整型变量用于存放整数
byte
short
int
long
区别在于不同类型的整型,最大值,最小值不一样
如果试图给byte类型的变量赋予超出其范围的值,就会产生编译错误,这个时候就需要进行类型转换

 

字符型

char类型用于存放一个字符,值用单引号'表示 (双引号表示字符串)
其长度和short一样,也是16位的
只能存放一个字符,超过一个字符就会产生编译错误

 

浮点型

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

 

 

布尔型

布尔型用于表示真假
其长度为1

boolean b1 = true;

boolean b2 = false;
分别代表真假
虽然布尔型真正存放的数据是0(false) 1(true)
但是,不能直接使用0 1 进行赋值

 

 

String类型

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

 

 

转义字符  //以下是转义字符

    char tab = '\t'; //制表符

    char carriageReturn = '\r'; //回车

    char newLine = '\n'; //换行

    char doubleQuote = '\"'; //双引号

    char singleQuote = '\''; //单引号

    char backslash = '\\'; //反斜杠

 

 

基本类型的类型转换

转换规则

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

 

低精度向高精度转换

long l = 50;

int i = 50;

 


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

 

高精度向低精度转换

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) 因为放不下了
编译器就会提示错误
这个时候就只能采用强制转换,强制转换的意思就是,转是可以转的,但是不对转换之后的值负责。 风险自担,后果自负

 

 

命名规则

变量命名只能使用字母数字 $ _ 
变量第一个字符 只能使用 字母 $ _ 
变量第一个字符 不能使用数字 
注:_ 是下划线,不是-减号或者—— 破折号

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

在命名的时候,尽量使用完整的单词进行命名,比如name,moveSpeed,而不是使用缩写 n,m。

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

什么是关键字
比如int, short, class 这些单词已经被java 赋予了特殊的含义,这些就是关键字。不能用直接来作为变量名
比如class
int class = 5;
class 是关键字
但是可以包含
比如
int class5 = 5;

关键字列表1

 

关键字列表2

 

 

 

 

中文也是可以用来命名变量的

中文也是可以用来命名变量的 
但是在实际工作中。。。别这么干。。

 

 

 什么是JAVA的作用域

变量处于不同的位置,有不同的名称 

分别是 
字段,属性 
参数 
局部变量 

不同名称的变量,其作用域是不一样的

 

 

 

 

字段,属性,Field

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

 

 

参数

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

 

 

局部变量

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

 

(例题)属性的作用域在方法中,参数的作用域也在方法中,如果属性和参数命名相同了的话? 那么到底取哪个值?

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?

    }

}

输出是5,当访问的变量被多个作用域影响的时候,按照就近原则取

 

JAVA 中FINAL修饰变量

final 修饰一个变量,有很多种说法,比如不能改变等等 
准确的描述是 当一个变量被final修饰的时候,该变量只有一次赋值的机会

final 除了修饰变量,还可以修饰类修饰方法

例如:

如果final修饰的是参数,能否在方法里给这个参数赋值?

答案:   不可以,因为在调用方法的时候,就一定会第一次赋值了,后面不能再进行多次赋值

 

什么是JAVA的表达式

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

表达式是由变量、操作符以及方法调用所构成的结构。

 

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

表达式是由变量、操作符以及方法调用所构成的结构。如下所示:

int i = 5; 

System.out.println(5);

 

1

2

3

4

5

6

7

public class HelloWorld {

    public static void main(String[] args) {

        //每一句话都是一个表达式

        int i = 5; 

        System.out.println(5);

    }

}

 

; 也是一个完整的表达式 

 

1

2

3

4

5

6

7

8

9

public class HelloWorld {

    public static void main(String[] args) {

        //一个空;也是一个表达式

        ;

        ;

        ;      

        ;

    }

}

什么是JAVA的块

从{ 开始 到对应的} 结束,即一个块

 

posted @ 2017-12-16 13:38  懒人百态  阅读(214)  评论(0编辑  收藏  举报