8:Java 语言基础 (字符和字符串参与运算)
1.Java 语言基础(常量的概述和使用)
A: 常量定义 程序运行期间值不能改变的量
B:Java 中常量的分类
字面值常量 自定义常量(面向对象中)
C: 字面常量的分类
字符串常量 双引号扩起来的
整数常量 所有的整数
小数常量 所有的小数
字符常量 单引号扩起来的 中间的值只能是单个的
布尔常量 只有 true 和 false
2.Java 语言基础(进制之间的转换)
A: 任意进制到十进制的转换原理
* 系数: 就是每一位上的数据
* 基数: X 进制, 基数就是 X
* 权: 在右边, 从 0 开始编号, 对应位上的编号即为该位的权
* 结果: 把系数 * 基数的权次幂相加即可
3.Java 基础(原码反码补码)
强制类型转换使用到了原反补的知识
原码: 二进制的表示方式 最高位为符号位,"0" 为正 "1" 位负其余表示数值
反码: 正数的反码与原码相同, 负数的反码对原码取反, 符号位不变
补码: 正数的补码和原码相同, 负数的补码在其反码上末位上加 1
4Java 的数据类型和分类
A:Java 是强类型语言, 对于每一种数据类型都定义了明确的具体的数据类型, 根据其大小在内存中分配了不同大小的空间
B: 数据类型的分类
基本数类型 引用数据类型
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 类型没有明确指定他的大小
5: 数据类型(隐士转换)
* A: 案例演示*a:int+int
*b:byte+int
* B:Java 中的默认转换规则
* 取值范围小的数据类型与取值范围大的数据类型进行运算, 会先将小的数据类型提升为大的, 再运算
* C: 画图解释 byte+int 类型的问题
6: 数据类型转换(强制转换)
* A: 强制转换问题*inta=10;
*byteb=20;
*b=a+b;
* B: 强制转换的格式
* b = (byte)(a + b);
* C: 强制转换的注意事项
* 如果超出了被赋值的数据类型的取值范围得到的结果会与你期望的结果不同
7: 面试题(变量相加和常量相加的区别)
* A: 案例演示
* 面试题: 看下面的程序是否有问题, 如果有问题, 请指出并说明理由*byteb1=3;
*byteb2=4;
*byteb3=b1+b2;
* 从两方面去回答这个题
* b1 和 b2 是两个变量, 变量里面存储的值都是变化的, 所以在程序运行中 JVM 是无法判断里面具体的值
* byte 类型的变量在进行运算的时候, 会自动类型提升为 int 类型
* byte b4 = 3 + 4;
* 3 和 4 都是常量, java 有常量优化机制, 就是在编译的的时候直接把 3 和 4 的结果赋值给 b4 了
进行混合运算的时候, byte,short,char 不会相互转换, 都会自动类型提升为 int 类型, 其他类型进行混合运算的是小的数据类型提升为大的
8:Java 语言基础 (字符和字符串参与运算)
* A: 案例演示*System.out.println(a);
*System.out.println(a+1);
* 通过看结果知道 a 的值是多少, 由此引出 ASCII 码表
* B:ASCII 码表的概述
* 记住三个值:*048
*A65
*a97
* C: 案例演示*System.out.println("hello"+a+1);
*System.out.println(a+1+"hello");
* D:+ 在有字符串参与中被称为字符串连接符*System.out.println("5+5="+5+5);
*System.out.println(5+5+"=5+5");
9:Java 语言基础(char 数据类型)
* A:char c = 97; 0 到 65535
* B:Java 语言中的字符 char 可以存储一个中文汉字吗? 为什么呢?
* 可以因为 Java 语言采用的是 Unicode 编码 Unicode 编码中的每个字符占用两个字节中文也是占的两个字节
* 所以, Java 中的字符可以存储一个中文汉字
10:(算术运算符的基本用法)
* A: 什么是运算符
* 就是对常量和变量进行操作的符号
* B: 运算符的分类
* 算术运算符, 赋值运算符, 比较 (关系或条件) 运算符, 逻辑运算符, 位运算符, 三目 (元) 运算符
* C: 算数运算符有哪些
* +,-,*,/,%, +,--
* D: 注意事项:
* a:+ 号在 java 中有三种作用, 代表正号, 做加法运算, 字符串的连接符
* b: 整数相除只能得到整数如果想得到小数, 必须把数据变化为浮点数类型
* c:/ 获取的是除法操作的商,% 获取的是除法操作的余数
* % 运算符
* 当左边的绝对值小于右边绝对值时, 结果是左边
* 当左边的绝对值等于右边或是右边的倍数时, 结果是 0
* 当左边的绝对值大于右边绝对值时, 结果是余数
* % 运算符结果的符号只和左边有关系, 与右边无关
* 任何一个正整数 %2 结果不是 0 就是 1 可以用来当作切换条件
11:Java 语言基础(算术运算符 ++ 和 -- 的用法)
* A:++,-- 运算符的作用
* 自加 (++) 自减 (--) 运算
* ++: 自加对原有的数据进行 + 1
* --: 自减对原有的数据进行 - 1
* B: 案例演示
* a: 单独使用:
* 放在操作数的前面和后面效果一样(这种用法是我们比较常见的)
* b: 参与运算使用:
* 放在操作数的前面, 先自增或者自减, 然后再参与运算
* 放在操作数的后面, 先参与运算, 再自增或者自减
B: 案例演示
* 请分别计算出 x,y 的值?intx=4;
inty=(x++)+(++x)+(x*10);
C: 面试题*byteb=10;
*b++;
*b=b+1;
* 问哪句会报错, 为什么byteb=10;
//b++;//b = (byte)(b + 1)
b=b+1;// 当 byte 与 int 进行混合运算的时候, 会提升为 int 类型, 两个 int 相加的结果还是 int, 赋值给 byte 会损失精度
System.out.println("b ="+b);
A: 赋值运算符有哪些
* a: 基本的赋值运算符:=
* 把 = 右边的数据赋值给左边
* b: 扩展的赋值运算符:+=,-=,*=,/=,%=
* += 把左边和右边做加法, 然后赋值给左边
A: 案例演示
* 面试题: 看下面的程序是否有问题, 如果有问题, 请指出并说明理由*shorts=1;s=s+1;
*shorts=1;s+=1;
面试题: 看下面的程序是否有问题, 如果有问题, 请指出并说明理由//short s=1;s = s+1;// 当 short 与 int 进行运算的时候, 会提升为 int 类型, 两个 int 类型相加的结果也是 int 类型
shorts=1;s+=1;//s = (short)(s + 1);
* A: 关系运算符有哪些(比较运算符, 条件运算符)
* ==,!=,>,>=,
* 注意事项:
* 无论你的操作是简单还是复杂, 结果是 boolean 类型
* "==" 不能写成 "="
来源: http://www.bubuko.com/infodetail-2494687.html