常量的概述和使用
A:什么是常量
在程序执行的过程中其值不可以发生改变
B:Java中常量的分类
字面值常量
自定义常量(面向对象部分讲)
C:字面值常量的分类
字符串常量 用双引号括起来的内容
整数常量 所有整数
小数常量 所有小数
字符常量 用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号
布尔常量 较为特殊,只有true和false
空常量
class Demo1_Constant { //constant 常量 public static void main(String[] args) { /* * 字符串常量 用双引号括起来的内容 * 整数常量 所有整数 * 小数常量 所有小数 * 字符常量 用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号 * 布尔常量 较为特殊,只有true和false * 空常量 null(数组部分讲解) */ System.out.println("abc"); //字符串常量 System.out.println(123); //整数常量 System.out.println(12.3); //小数常量 //System.out.println('10'); //''中必须放的是单个字符,10代表的是1字符和0字符 //System.out.println(''); //''中什么也不放,也是不可以的,因为代表不了任何字符 System.out.println(' '); //带表空格字符 System.out.println(true); //boolean类只有两个值,true和false System.out.println(false); } }
进制概述和二,八,十六进制图解
A:什么是进制
* 进制:就是进位制,是人们规定的一种进位方法。 对于任何一种进制--X进制,就表示某一位置上的数运算时是逢X进一位。二进制就是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一。 例如一周有七天,七进制,一年有十二个月,十二进制
B:十进制的由来
* 十进制的由来是因为人类有十个手指
C:二进制的由来
* 其实二进制来源与中国,请看史料记载
* 18世纪德国数理哲学大师莱布尼兹从他的传教士朋友鲍威特寄给他的拉丁文译本《易经》中,读到了八卦的组成结构,惊奇地发现其基本素数(0)(1),即《易经》的阴爻yao- -和__阳爻,其进位制就是 二进制,并认为这是世界上数学进制中最先进的。20世纪被称作第三次科技革命的重要标志之一的计算机的发明与应用,其运算模式正是二进制。它不但证明了莱布尼兹的原理是正确的,同时也证明了《易经》数理学是很了不起的。
D:八进制的由来
* 任何数据在计算机中都是以二进制的形式存在的。二进制早期由电信号开关演变而来。一个整数在内存中一样也是二进制的,但是使用一大串的1或者0组成的数值进行使用很麻烦。
* 所以就想把一大串缩短点,将二进制中的三位用一位表示。这三位可以取到的最大值就是7.超过7就进位了,这就是八进制。
E:十六进制的由来
* 但是对于过长的二进制变成八进制还是较长,所以出现的用4个二进制位表示一位的情况,四个二进制位最大是15,这就是十六进制。
F:不同进制表现同一个数据的形式特点
* 进制越大,表现形式越短
不同进制数据的表现形式
* A:二进制的数据表现形式
* 由0,1组成。以0b(b可以大写也可以小写)开头(JDK1.7版本可以表示二进制了)
* B:八进制的数据表现形式
* 由0,1,…7组成。以0开头
* C:十进制的数据表现形式
* 由0,1,…9组成。整数默认是十进制的
* D:十六进制的数据表现形式
* 由0,1,…9,a,b,c,d,e,f(大小写均可)。以0x开头
任意进制到十进制的转换图解
A:任意进制到十进制的转换原理
* 系数:就是每一位上的数据。
* 基数:X进制,基数就是X。
* 权:在右边,从0开始编号,对应位上的编号即为该位的权。
* 结果:把系数*基数的权次幂相加即可。
十进制到任意进制的转换图解
A:十进制到任意进制的转换原理
* 除积倒取余
快速的进制转换法
* A:8421码及特点
* 8421码是中国大陆的叫法,8421码是BCD代码中最常用的一种。在这种编码方式中每一位二值代码的1都是代表一个固定数值,把每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码。
* B:通过8421码的方式进行二进制和十进制的相互转换
* C:二进制到八进制的简易方式
* D:二进制到十六进制的简易方式
原码反码补码(正数都不变 负数的反码除符号位外取反,补码是反码+1)
原码
* 就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
* 通过一个字节,也就是8个二进制位表示+7和-7
* 0(符号位) 0000111
* 1(符号位) 0000111
反码
* 正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码
* 正数的补码与其原码相同;负数的补码是在其反码的末位加1。
变量的概述及格式
* A:什么是变量
* 在程序执行的过程中,在某个范围内其值可以发生改变的量
* B:变量的定义格式
* 数据类型 变量名 = 变量值;
* C:为什么要定义变量
* 用来不断的存放同一类型的常量,并可以重复使用
数据类型的概述和分类
* A:为什么有数据类型
* Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间
* B:Java中数据类型的分类
* 基本数据类型
* 引用数据类型
* 面向对象部分讲解
* C:基本数据类型分类(4类8种)
* 整数型
* byte 占一个字节 -128到127
* short 占两个字 -2^15~2^15-1
* int 占四个字节 -2^31~2^31-1
* long 占八个字节 -2^63~2^63-1
* 浮点型
* float 占四个字节 -3.403E38~3.403E38 单精度
* double 占八个字节-1.798E308~1.798E308 双精度
* 字符型
* char 占两个字节 0~65535
* 布尔型
* boolean
* boolean理论上是占八分之一个字节,因为一个开关就可以决定是true和false了,但是java中boolean类型没有明确指定他的大小
class Demo1_DataType { //DataType数据类型 public static void main(String[] args) { //整数类型 byte b = 10; //占一个字节,-128 到 127 short s = 20; //占两个字节 int i = 30; //占四个字节 整数默认的数据类型就是int类型 long x = 8888888888L; //占八个字节 如果long类型后面加L进行标识最好加大L,因为小l太像一了 System.out.println(b); System.out.println(s); System.out.println(i); System.out.println(x); //System.out.println(12345 + 54321l); //浮点类型 float f = 12.3F; //占四个字节 double d = 33.4; //占八个字节 小数默认的数据类型是double,double类型后面也可以用D或d标识,但是一般不加 System.out.println(f); System.out.println(d); //字符类型 char c = 'a'; //占两个字节 System.out.println(c); //布尔类型 boolean b1 = true; boolean b2 = false; System.out.println(b1); System.out.println(b2); } }
使用变量的注意事项
class Demo2_DataType { public static void main(String[] args) { /* * a:作用域问题 * 同一个区域不能使用相同的变量名 * b:初始化值问题 * 局部变量在使用之前必须赋值 * c:一条语句可以定义几个变量 * int a,b,c...; */ /*int x = 10; int x = 20; System.out.println(x); int y; y = 10; System.out.println(y);*/ int a,b,c,d,e; a = 10; b = 20; c = 30; d = 40; e = 50; System.out.println(a); int x = 10; int y = 20; int z = 30; } }
数据类型转换之隐式转换
class Demo3_DataTypeConversion { //Conversion转换 public static void main(String[] args) { //数据类型转换之隐式转换 /*int x = 3; byte b = 4; x = x + b; System.out.println(x);*/ //数据类型转换之强制转换 /*int x = 3; byte b = 4; b = (byte)(x + b); System.out.println(b);*/ //00000000 00000000 00000000 10000010 130的二进制 //10000010 -126补码 //00000001 -1求反码 //10000001 -126反码 //11111110 -126原码 byte b = (byte)(126 + 4); System.out.println(b); // -126 //00000000 00000000 00000001 00101100 300的二进制 //00101100 byte b2 = (byte)300; System.out.println(b2); //44 } }
面试题之变量相加和常量相加的区别
class Test1_DataTypeConversion { public static void main(String[] args) { //面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。 byte b1 = 3; byte b2 = 4; //byte b3 = b1 + b2; /* 从两方面 1,byte与byte(或short,char)进行运算的时候会提升为int,两个int类型相加的结果也是int类型 2,b1和b2是两个变量,变量存储的值是变化,在编译的时候无法判断里面具体的值,相加有可能会超出byte的取值范围 */ //System.out.println(b3); //byte b4 = 3 + 4; //java编译器有常量优化机制 byte b4 = 7; System.out.println(b4); } }
进行混合运算的时候,byte,short,char不会相互转换,都会自动类型提升为int类型,其他类型进行混合运算的是小的数据类型提升为大的
byte,short,char -- int -- long -- float -- double
字符和字符串参与运算
System.out.println('a'); //a System.out.println('a'+1); //98
记住三个值:
'0' 48
'A' 65
'a' 97
System.out.println("hello"+'a'+1); //helloa1 System.out.println('a'+1+"hello"); //98hello
System.out.println("5+5="+5+5); //5+5=55 System.out.println(5+5+"=5+5"); //10=5+5
char数据类型
A:char c = 97; 0到65535
B:Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
可以。因为Java语言采用的是Unicode编码。Unicode编码中的每个字符占用两个字节。中文也是占的两个字节
所以,Java中的字符可以存储一个中文汉字
算术运算符的基本用法
A:什么是运算符
就是对常量和变量进行操作的符号。
B:运算符的分类
算术运算符,赋值运算符,比较(关系或条件)运算符,逻辑运算符,位运算符,三目(元)运算符
C:算数运算符有哪些
+,-,*,/,%,++,--
D:注意事项:
a:+号在java中有三种作用,代表正号,做加法运算,字符串的连接符
b:整数相除只能得到整数。如果想得到小数,必须把数据变化为浮点数类型
c:/获取的是除法操作的商,%获取的是除法操作的余数
%运算符
当左边的绝对值小于右边绝对值时,结果是左边
当左边的绝对值等于右边或是右边的倍数时,结果是0
当左边的绝对值大于右边绝对值时,结果是余数
%运算符结果的符号只和左边有关系,与右边无关
任何一个正整数%2结果不是0就是1可以用来当作切换条件
赋值运算符的基本用法
赋值运算符有哪些
a:基本的赋值运算符:=
把=右边的数据赋值给左边。
b:扩展的赋值运算符:+=,-=,*=,/=,%=
+= 把左边和右边做加法,然后赋值给左边。