一、常量
1. 概述:在程序运行的过程中,其值不发生改变
2. 分类:
1.字面值常量
2.自定义常量
3. 字面值常量分类:
1.字符串: ""
2.整数
3.小数
4.字符:''
5.布尔:true ,false
6.空:null
4. 进制:x进制就是逢x进一,人为规定的
5. 计算机中的进制为: 二进制,八进制,十进制,十六进制
(1). 二进制的由来:开关的两个状态来表示数据,0和1来表示,使用8个bit来表示一个数据,这个一个数据叫做Byte(字节)
(2). 八进制 十六进制的由来:把二进制分组,每组转换为10进制数字,组合而成
(3).表示方式 10
1. 二进制:0b10
2. 八进制:010
3. 十进制:10
4. 十六进制:0x10
(4). 进制的转换
8421码:每一个二进制上的1,都代表固定的十进制的值
1 111 1111
128 1
(5). 有符号的表示方式(了解)
1. 原码: 符号位,数值位
1 000 0001
1表示负数
0表示正数
2. 反码: 符号位不变,数值位0-->1 ,1-->0
3. 补码: 反码补1
因为计算机的运算都是补码运算的
4. 正数 : 原反补都一样
5. 负数 : 原反补算一算
二、 变量
1. 变量概述:在程序运行的过程中,其值可以发生改变
2. 格式:
数据类型 变量名 = 初始化值;
3. 数据类型:
1. 概述:限制初始化值的范围.
2. 分类: 基本数据类型
引用数据类型
3. 基本数据类型分类:
1. 四类八种
整数 字节 范围
byte 1 -128~127
short 2
默认*int 4 21亿
long 8
浮点数
float 4
默认*double 8
字符
char 2 0-65535
布尔
boolean 1 true false
/*
数据类型
基本数据类型:四类八种
整数:byte(-128到127) shot(-32768到32767), int(-2147483648到2147483647) ,long (-2^63到2^63-1)
浮点 float (-3.4*10^38~3.4*10^38-1)
定义float用F或f
double(-1.7*10^308~1.7*10^308-1)
字符 char 2字节,(0-65535)
布尔 boolean :ture false
引用数据类型
类:class
接口:interface
数组[] Array
*/
- class Noname1{
- public static void main(String[] args)
- {
- //定义变量
- //整数变量
- //byte
- byte a= 3;
- System.out.println(a);
- //short
- short b=13;
- System.out.println(b);
- //float
- float c= 3.5f;
- System.out.println(c);
- //boolean
- boolean e=true;
- System.out.println(e);
- }
- }
执行结果:
4. 数据类型的转换
1. 默认转换(自动提升)--从小到大
byte,short,char-->int-->long-->float-->double
byte,short,char相互不转换,直接转为int
boolean不参与转换
2. 显示转换(强制转换)--从大到小
格式:
数据类型 变量名 = (目标数据类型)(数据值);
***********数据类型转换习题**********
第一题:
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
哪句是编译失败的呢?为什么呢?
b=b1+b2,编译失败,b1+b2结果自动提升为int型,而b是byte 型,会显示损失精度
第二题:
byte by = 130;有没有问题?有问题如何解决?结果是多少呢?
有问题,byte取值范围是-128到127之间,130超出范围
可以进行强制转换,byte b=(byte)130; 结果是-126
**************************************************************
3. 字符和字符串的运算
1. 字符类型-->'a' + 1 --> 自动提升
2. 字符串 --> "a" + true + "+" --> 字符串拼接(拼串儿)
三、运算符号:
1)、算术运算符。
+ - * / % %:任何整数模2不是0就是1,所以只要改变被模数就可以实现开关 运算。
+:连接符。
++,-- 自增、自减。
2)、赋值运算符。
= += -= *= /= %=
3)、比较运算符。
特点:该运算符的特点是:运算完的结果,要么是true,要么是false。
4)、逻辑运算符。
& | ^ ! && ||
逻辑运算符除了 ! 外都是用于连接两个boolean类型表达式。
&: 只有两边都为true结果是true。否则就是false。
|:只要两边都为false结果是false,否则就是true
^:异或:和或有点不一样。
两边结果一样,就为false。
两边结果不一样,就为true.
& 和 &&区别: & :无论左边结果是什么,右边都参与运算。
&&:短路与,如果左边为false,那么右边不参数与运算。
| 和|| 区别:|:两边都运算。
||:短路或,如果左边为true,那么右边不参与运算。
5)、位运算符:用于操作二进制位的运算符。
& | ^ << >> >>>(无符号右移)
四、语句
基础的有 顺序 选择 循环
1)三元运算符:
变量=(条件表达式)?表达式1:表达式2:
三元运算符:好处:可以简化if else 代码
弊端:因为是一个运算符,所以运算必须有一个结果
例如将60转为16进制:
- class Abc{
- public static void main(String[] args)
- {
- //System.out.println(Integer.toBinaryString(60));
- int num=60;
- //获取60 最低四位,通过&15
- int n1=num&15;
- System.out.println((char)(n1-10+'A'));
- //要获取下一位4位,将60右移4位
- int temp=60>>4;
- //对temp的值进行最低4位的获取
- int n2=temp&15;
- System.out.println(n2>9? (char)(n2-10+'A'):n2);
- /*0-9 'A' 'B' 'C' 'D' 'E' 'F'
- ?? ? 10 ?11 ?12 ?13 ?14 ?15
- ?? ? 12-10=2+'A'=(char)67;
- */
- }
- }
执行结果
2)switch语句
switch(表达式)//只接收四种类型 byte short int char
{
case取值1:
执行语句;
break;
case取值2:
执行语句;
break;
……
default;
执行语句;
break;//case是没有顺序的,位置可以随意
//如果匹配的case或default没有对应的break,那么程序会继续向下执行, //直到遇到break或switch结尾结束。
}
//if 和switch 语句很像
如果判断数值不多,而且符合byte short int char这四种类型
虽然两个语句都可以用,建议用switch,因为效率稍高。
3) 循环结构
代表语句:while,do while ,for
比如我们需要输出从1到10之间的数字
- </pre><pre name="code" class="java">class ChengFaBiao{
- public static void main(String[] args)
- {
- for (int x=1; x<=9 ;x++ ){
- for (int y=1;y<=x ;y++ ){
- System.out.print(y+"*"+x+"="+y*x+"\t");
- }
- System.out.println();
- }
- }
- }
do while
do
{
}
while
while:先判断条件,只有条件满足才执行循环体
do WHILE:先执行循环体,再判断条件,条件满足,再执行循环体
无论条件是否满足,循环体至少执行一次
for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
执行语句;
}
变量有自己的作用域。对于for来讲;如果将用于控制循环的增量定义在for语句中。那么该变量只在for语句内有效,for语句执行完毕,该变量在内存中被释放,for和while可以进行互换,如果定义循环增量,用for更合适
当语句执行很多此时,就使用循环结构
多表达式,用,分隔开
例如for循环打印99乘法表
- class ChengFaBiao{
- public static void main(String[] args)
- {
- for (int x=1; x<=9 ;x++ ){
- for (int y=1;y<=x ;y++ ){
- System.out.print(y+"*"+x+"="+y*x+"\t");
- }
- System.out.println();
- }
- }
- }
执行结果:
4)无限循环的最简单表现形式
for( ;;){}
while(true){}
累加思想:通过变量记录住循环操作后的结果