/* 变量的第一个测试程序:Var是变量 1 关于程序当中的数据? 开发软件是为了解决现实世界中的问题。 而现实世界当中,有很多问题都是使用数据进行描述的。 所以软件执行过程中最主要的就对数据的处理。 软件在处理数据之前需要能够表示数据,在java代码中怎么去表示数据呢?在java中有这样的一个概念:字面量。 注意:在java语言中“数据”被称为“字面量”。 10 1.23 true false 'a' "abc" 以上这些都是数据,在程序中被叫做“字面量”。 字面量可以分为很多种类: 整数型字面量 1 2 3 100 -100 -20 .... 浮点型字面量 1.3 1.2 3.14..... 布尔型字面量 true false 没有其他值了,表示真和假,true表示真,false表示假 字符型字面量 'a' 'b' '中' 字符串型字面量 "abc" "a" "b" "中国" 其实字符型和字符串型都是描述了现实世界中的文字: 需要注意的是: 所有的字符型只能使用单引号括起来。 所有的字符串型只能使用双引号括起来。 字符型一定是单个字符才能成为"字符型"。 在语法级别上怎么区分字符型和字符串型? 主要看是双引号还是单引号 单引号的一定是字符型 双引号的一定是字符串型。 2 什么是变量? */ public class VarTest{ public static void main(String[] args){ System.out.println(100); System.out.println(3.14); System.out.println(true); System.out.println(false); System.out.println('a'); System.out.println('中'); System.out.println("abc"); System.out.println("国");//这不属于字符型,因为使用双引号括起来了,所以他是字符串。 System.out.println('好');//属于字符型 System.out.println("好");//属于字符串型 System.out.println("1");//属于整数型吗?不是,是字符串。 //分析一下:如果只有字面量,没有变量机制的话,会有什么问题? //10 是一个整型数据,在内存中占有一定的空间(CPU 内存 硬盘) //10 + 20 = 30 //在内存中找一块空间存储10,在找一块空间存储20, CPU负责“+”运算,算完之后的结果是30,那么这个30也会在内存当中找一块临时的空间存储起来。 //思考:以下的三个100在内存中是一块空间,还是三块不同的空间呢? //以下虽然都是100,但是这3个100占用三块不同的内存空间。 System.out.println(100); System.out.println(100); System.out.println(100); System.out.println(100); System.out.println(100); System.out.println(100);//只有“字面量”机制的话,是远远不够的,因为只有字面量内存是无法重复利用的。 //定义/声明一个变量,起名i int i = 10; //以下这5次访问都是访问的同一块内存空间。(这样使用变量之后,内存空间就得到了复用) System.out.println(i); System.out.println(i); System.out.println(i); System.out.println(i); System.out.println(i); //以下程序标识访问的是字符i以及字符串i,以下的这两个i和以上的i变量没有任何关系。 System.out.println('i'); System.out.println("i"); } }
/** * 变量测试类2 * @author 吴欣麟 * @version 1.1 * @since 1.0 */ /* 什么是变量? 变量其实就是内存当中存储数据的最基本的单元。 变量就是一个存储数据的小盒子。 在java语言当中任何数据都是有数据类型的,其中整数型是:int 没有为什么,Java中规定的,整数型就是:int 当然,在java中除了数据类型int之外,还有其他的类型,例如带小数的:double等。。。 数据类型有什么用? 记住:不同的数据类型,在内存中分配的空间大小不同。 也就是说,java虚拟机到底给这个数据分配多大的空间,主要还是看这个变量的数据类型是什么,根据不同的类型,分配不同大小的空间。 对于int这种整数类型,JVM会自动给int分配4个字节大小的空间。 1个字节 = 8个比特位 1个比特位就是一个1或0。注意:比特位是二进制位。 int是占用多少个二进制位?32个二进制位(4*8 bit位) int i = 1;实际上在内存中是这样表示的: 00000000 00000000 00000000 00000001 int i = 2 00000000 00000000 00000000 00000010 二进制位就是:满2进1位(0 1 10 11 100 101......) 十进制为就是 满10进1位(1 2 3 4 5 6 7 8 9 10) 对于一个变量来说,包括三要素: 变量的数据类型 变量的名字 变量中保存的值 有类型+名字+值 类型决定空间的大小 起个名字是为了以后方便访问。(以后在程序中访问这个数据是通过名称来访问的) 值是变量保存的数据 变量名属于标识符吗? 变量名命名规范中是怎么说的? 首字母小写,后面每个单子首字母大写,遵循驼峰命名方式,见名知意。 变量怎么声明/定义,语法格式是什么? 数据类型 变量名; 例如: int age = 20; 在java语言中有一个规定,变量必须先声明,再赋值才能访问。(没有值相当于这个空间没有开辟一样) 在java语言中怎么给一个变量赋值呢,语法格式是什么? 记住:使用一个运算符,叫做“=”,这个运算符被称为赋值运算符。 赋值运算符“=”的运算特点是:等号右边先执行,执行完之后赋值给左边的变量。 变量可以声明的时候赋值吗?可以的。 */ public class VarTest02{ /** * 这是一个程序的入口 * @param args是main方法的参数 */ public static void main(String[] args){ //定义一个int类型的变量,起名age,该变量用来存储人的年龄。 int age; //变量声明之后,没有手动赋值,可以直接访问吗? //编译报错:错误: 可能尚未初始化变量age //System.out.println(age); //给变量赋值 age = 45; System.out.println(age); //这是访问变量 System.out.println("age");//这是访问字符串 //变量:可以变化的量。 age = 80; System.out.println(age); // 再次重新赋值 age = 90; System.out.println(age); //体重80kg int weight = 80; System.out.println(weight); } }
public class VarTest03{ public static void main(String[] args){ // 在这里可以访问k变量吗? // 注意:方法体当中的代码遵循自上而下的顺序依次逐行执行。 // 所以以下程序编译报错。 System.out.println(k);//错误: 找不到符号 // 只有执行了这一行代码,k变量在内存中才会开辟空间。 int k = 10; } }
// 重要的结论:在同一个域当中(这个域怎么理解,后面讲),变量名不能重名,不能重复声明。 public class VarTest04{ public static void main(String[] args){ // 声明一个整数型的变量起名nianLing,存储值20 int nianLing = 20; System.out.println(nianLing); // 给变量重新赋值 ninaLing = 30; System.out.println(nianLing); //这个可以吗?不行 int nianLing = 100; //错误: 已在方法 main(String[])中定义了变量 nianLing System.out.println(nianLing); } } 变量的作用域 出了大括号就不认识了。别的先别管。 { int i = 100; { 在这里可以访问i } } { 在这里是无法访问i变量。 }