------- android培训、java培训、期待与您交流! ----------
1.Java语言基础(常量的概述和使用)
* A:什么是常量
*在程序执行的过程中其值不可以发生改变
* B:Java中常量的分类
*字面值常量
*自定义常量(面向对象部分讲)
* C:字面值常量的分类
*字符串常量 用双引号括起来的内容
*整数常量 所有整数
*小数常量 所有小数
*字符常量 用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号
*布尔常量 较为特殊,只有true和false
*空常量 null(数组部分讲解)
* D:案例演示. 用输出语句输出各种常量。null不演示
System.out.println('10'); //''中必须放的是单个字符,10代表的是1字符和0字
2.不同进制数据的表现形式
* 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开头
3.变量的概述及格式(掌握)
* A:什么是变量
*在程序执行的过程中,在某个范围内其值可以发生改变的量
* B:变量的定义格式
*数据类型 变量名 = 变量值;
* C:为什么要定义变量
*用来不断的存放同一类型的常量,并可以重复使用
4.数据类型的概述和分类(掌握)
* 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
如果想将一个超过int取值范围的数赋值给long类型的变量,该值后需要加L
*浮点型
*float 占四个字节 -3.403E38~3.403E38 单精度
float类型存储小数的话一定要加f 如:float aa = 12.6f 否则会出错
*double 占八个字节-1.798E308~1.798E308 双精度 (小数默认的数据类型)
*字符型
*char 占两个字节 0~65535
*布尔型
*boolean
*boolean理论上是占八分之一个字节,因为一个开关就可以决定是true和false了,但是java中boolean类型没有明确指定他的大小
5.定义不同数据类型的变量(掌握)
* A:案例演示
*定义不同基本数据类型的变量,并输出
*赋值时候注意float类型,long类型
6.使用变量的注意事项(掌握)
*a:作用域问题
*同一个区域不能使用相同的变量名
*b:初始化值问题
*局部变量在使用之前必须赋值 (定义在方法中)
*c:一条语句可以定义几个变量
*int a,b,c...;
7.数据类型转换之隐式转换 //默认为隐式转换
* A:案例演示
*a:int + int = int
*b:byte + int = int
* B:Java中的默认转换规则
*取值范围小的数据类型与取值范围大的数据类型进行运算,会先将小的数据类型提升为大的,再运算 (取值范围小就是所占的字节数少)
8.数据类型转换之强制转换
* A:强制转换问题
*int a = 10;
*byte b = 20;
*b = a + b; //会报错,损失精度!!
9.面试题之变量相加和常量相加的区别
*看下面的程序是否有问题,如果有问题,请指出并说明理由。
*byte b1 = 3;
*byte b2 = 4;
*byte b3 = b1 + b2;
*从两方面去回答这个题
*b1和b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值相加有可能超出byte的取值范围
*byte与byte类型的变量(或short与short)或(byte与int)在进行运算的时候,会自动类型提升为int类型 (因为给变量赋值时不加说明默认为int类型的数据)
*byte b4 = 3 + 4; 3和4都是常量,java有常量优化机制,就是在编译的的时候直接把3和4的结果赋值给b4了,所以可以
10.字符和字符串参与运算
* A:案例演示
*System.out.println('a'); 输出97
*System.out.println('a'+1); //输出98,a对应的是97
System.out.println((char)('a'+1)); //输出b
字符类型和int类型的数进行混合运算时会自动提升为int类型
*通过看结果知道'a'的值是多少,由此引出ASCII码表
* B:ASCII码表的概述
*记住三个值:
*'0' 48
*'A' 65
*'a' 97
* C:案例演示
*System.out.println("hello"+'a'+1); //任何数据类型用+与字符串相连接都会产生新的字符串,所以输出helloa1
*System.out.println('a'+1+"hello"); //输出98hello
* D:+在有字符串参与中被称为字符串连接符
*System.out.println("5+5="+5+5); //输出5+5=55
*System.out.println("5+5+"=(5+5)); //输出5+5=10,因为()的优先级高
11.char数据类型
* A:char c = 97; 0到65535,所以可以赋值
System.out.println(c); //输出a
* B:Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
*可以。因为Java语言采用的是Unicode编码。Unicode编码中的每个字符占用两个字节。中文也是占的两个字节
*所以,Java中的字符可以存储一个中文汉字(只能存储一个汉字)
12.算术运算符的基本用法
* A:什么是运算符
*就是对常量和变量进行操作的符号。
* B:运算符的分类
*算术运算符,赋值运算符,比较(关系或条件)运算符,逻辑运算符,位运算符,三目(元)运算符
* C:算数运算符有哪些
*+,-,*,/,%,++,--
* D:注意事项:
*a:+号在java中有三种作用,代表正号,做加法运算,字符串的连接符
*b:整数相除只能得到整数。如果想得到小数,必须把其中一个数据变化为浮点数类型()小数
*c:/获取的是除法操作的商,%获取的是除法操作的余数
*%运算符
*%运算符结果的符号只和左边有关系,与右边无关
*任何一个正整数%2结果不是0就是1可以用来当作切换条件
13.算术运算符++和--的用法
* A:++,--运算符的作用
*自加(++)自减(--)运算
*++:自加。对原有的数据进行+1
*--:自减。对原有的数据进行-1
* B:++案例演示
*a:单独使用:
*放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)
int a=3
a++;和++a都一样,相当于a=a+1
*b:参与运算使用:
*++放在操作数的前面,先自增或者自减,然后再将结果赋值。
int a=3
int b
b=++a
System.out.println(a); //a=4
System.out.println(b); //b=4
*++放在操作数的后面,会先将变量中的值取出做赋值操作,再自增或者自减。
int a=3
int b
b=a++
System.out.println(a); //a=4
System.out.println(b); //b=3
14.算术运算符++和--的练习
* A:案例演示
*请分别计算出a,b,c的值?
inta = 10;
intb = 10;
intc = 10;
a= b++; //a=10, b=11
c= --a; //a=9, c=9
b = ++a; //a=10, b=10
a= c--; //a=9. c=8
* B:案例演示
*请分别计算出x,y的值?
intx = 4;
inty = (x++)+(++x)+(x*10); //4+6+60 x=6,y=70
* C:问哪句会报错,为什么
*byte b = 10;
*b++; //底层会默认帮你强转 b=(byte)(b+1)
*b = b + 1; //b是byte类型,1是int类型,相加时会自动提升为int型,两个int相加还是int,所以会报错损失精度
15.赋值运算符的基本用法
* A:赋值运算符有哪些
*a:基本的赋值运算符:=
*把=右边的数据赋值给左边。
*b:扩展的赋值运算符:+=,-=,*=,/=,%=
*+= 把左边和右边做加法,然后赋值给左边,左边必须为变量.
16.赋值运算符的面试题
* A:案例演示
*看下面的程序是否有问题,如果有问题,请指出并说明理由。
*short s=1;s = s+1; //出错,short与int进行运算会提升为int,两个int相加为int,所以报错
*short s=1;s+=1; //s=(short)(s+1) 默认给强转了.和上面类似
17.关系运算符的基本用法及其注意事项
* A:关系运算符有哪些(比较运算符,条件运算符)
*==,!=,>,>=,<,<=
* 注意事项:
*无论你的操作是简单还是复杂,结果是boolean类型。
*"=="不能写成"="。