进制:
- 是一种进位的方式,x进制,表示逢x进1
- 计算机的电子原件的状态;开 关 那么,我们表达数据的时候,也是按照开 关的状态来表示的
- 如果我们表达数据仅仅用这两种状态,那么能够表达的数据是比较少的,而我们常见的数据,英文字面,数字,标点符号。这就很多了,两种状态是不够的。为了能够表示更多的数据,国际化标准组织就规定:用8个这样的信号来表示一个数据,这个数据的单位叫:字节。
- 后来,我们就通过数字1,0分别来表示开和关。
变量
- 变量概述:在程序执行过程中,在某个范围内其值可以发生改变的量
- 理解:如同数学中的未知数
- 格式:数据类型 变量名 = 初始化值
- 注意:格式是固定的,记住格式,以不变应万变
数据类型
- Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间
1 package com.itheima.demo01; 2 /* 3 * 数据类型:Java是一种强类型的数据语言,针对每一种数据都定义了明确的数据类型 4 * 5 * 数据类型分类 6 * 基本数据类型 7 * 引用数据类型(类 接口 数组) 8 * 9 * 基本数据类型:4类8种 10 * 整数:byte1 short2 int4 long8 11 * 浮点:float 4 double8 12 * 字符:char 2 13 * 布尔:boolean1 14 * 15 * 注意: 16 * 整数默认是int 17 * 浮点默认是double类型 18 * 19 * 长整型后缀必须加L或者l 20 * 单精度浮点数用F或者f标记,建议使用F 21 * 22 */ 23 public class DateTypeDemo { 24 public static void main(String[] args) { 25 //定义变量的格式 26 //数据类型 变量名 = 初始化值; 27 28 //定义一个字节类型 29 byte b = 10; 30 System.out.println(10); 31 System.out.println(b); 32 33 //定义一个短整型变量 34 short s = 100; 35 System.out.println(s); 36 37 //定义一个整型变量 38 int i = 1000; 39 System.out.println(i); 40 41 //超过了int的范围 42 //int j = 10000000000000; 43 long j = 100000000000L; 44 //long j = 100L; 45 System.out.println(j); 46 47 //定义浮点型数据变量 48 float f = 12.345F; 49 System.out.println(f); 50 51 double d = 12.345; 52 System.out.println(d); 53 54 } 55 }
使用变量注意事项:
- 作用域 变量定义在那一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域中不能定义两个同名变量。
- 初始化值 没有初始化值不能直接使用
- 在一行上建议只定义一个变量,可以定义多个,但是不建议
1 package com.itheima.demo01; 2 /* 3 4 */ 5 public class DateTypeDemo2 { 6 public static void main(String[] args) { 7 //定义变量的格式 8 int x = 100; 9 //错误:不能有同名 10 //int x = 200; 11 12 //定义变量必须给值 13 //int y; 14 //System.out.println(y); 15 } 16 }
- +号是一个运算符,我们应该能够看懂,做数据的加法。
- boolean类型不能转换为其他的数据类型
- 默认转换 byte,short,char-int-long-float-double
- byte,short,char相互之间不转换,他们参与运算首先转换为int类型
- 强制转换 目标类型 变量名 = (目标类型)(被转换的数据);
-
1 package com.itheima.demo01; 2 /* 3 * +是一个运算符,做加法运算的 4 * 5 * 一般来说,我们在运算的时候,要求参与运算的数据类型必须一致。 6 */ 7 public class DateTypeDemo3 { 8 public static void main(String[] args) { 9 //直接输出的方式做加法 10 System.out.println(3 + 4); 11 12 int x = 3; 13 int y = 4; 14 int z = x + y; 15 System.out.println(z); 16 17 //定义一个byte类型,一个int类型,做加法 可以正常运行 18 byte a = 3; 19 int b = 4; 20 System.out.println(a + b); 21 22 //可能损失精度 23 //byte c = a+b; 24 int c = a+b; 25 System.out.println(c); 26 } 27 }
1 package com.itheima.demo01; 2 /* 3 * 强制转换 从大的数据类型转换成小的数据类型 4 */ 5 public class DateTypeDemo4 { 6 public static void main(String[] args) { 7 byte a = 3; 8 int b = 4; 9 10 //用强制类型转换 11 byte c = (byte)(a+b); 12 System.out.println(c); 13 } 14 }
两个思考题:
1 package com.itheima.demo01; 2 /* 3 * 思考1: 4 * double d = 12.345; 5 * float f = d; 6 * 7 * 思考2:看看下面两个定义有没有区别 8 * float f1 = (float)12.345; 9 * float f2 = 12.345f; 10 * 11 * f1其实是通过一个double类型转换过来的 12 * f2本身就是一个float类型 13 */ 14 public class DateTypeDemo5 { 15 public static void main(String[] args) { 16 //把double赋值给float,加了强制类型转换 17 double d = 12.345; 18 float f = (float)d; 19 20 //思考2 21 float f1 = (float)12.345; 22 float f2 = 12.345f; 23 } 24 }
面试题:
-
1 package com.itheima.demo01; 2 /* 3 * 面试题: 4 * byte b1 = 3,b2=4,b; 5 * b=b1+b2; 6 * b=3+4; 7 * 那一句话会编译失败?为什么? 8 * b=b1 + b2有问题,因为变量相加,会首先看类型问题,最终把结果赋值的也会考虑类型问题。 9 * 常量相加,首先做加法,然后看结果是否在赋值的数据类型范围内,如果不是,才报错。 10 */ 11 public class DateTypeDemo6 { 12 public static void main(String[] args) { 13 byte b1 = 3,b2 = 4,b; 14 //b=b1+b2; 类型提升 15 b=3+4;//常量:先把结果计算出来,查看是否在范围内。 16 17 } 18 }
数据类型题目
-
1 package com.itheima.demo01; 2 /* 3 * 看程序写结果 4 * 0 48 5 * a 97 6 * A 65 7 */ 8 public class DateTypeDemo8 { 9 public static void main(String[] args) { 10 //直接输出一个字符 11 System.out.println('a');//a 12 //输出一个字符和一个整数做加法 13 System.out.println('a'+1);//98 14 15 //字符串数据和其他数据做+,结果是字符串类型。这里的+不是+。而是字符串连接符 16 System.out.println("hello"+'a'+1);//helloa1 17 System.out.println('a'+1+"hello");//98hello 18 19 20 System.out.println("5+5="+5+5);//5+5=55 21 System.out.println(5+5+"=5+5");//10=5+5 22 } 23 }