1、标识符
2、变量
3、进制转换
4、运算符
5、流程控制语句(顺序,选择)
1、标识符
标识符 : 常量,变量,方法,类和包的名称
规则: 由0到9之间的数字,字母,下划线,或美元符号 $ 组成 (汉字也行),不能以数字开头
不能与关键字相同 ,标识符严格区分大小写
正确的 cat ,Cat user_name , $UserName , _name , publicName
错误的 9cat , pass word , public, true , user#name , #name
2、变量
在程序执行期间,值可以改变的数据,在内存中的开辟一个空间,把它放在该空间中
--名称: 用标识符来命名
--类型: 对于不同类型的变量,在内存中的形式是不同的
--初始值: 变量在使用前必须赋值
//例子,使用未初始的变量,出错
public static void main(String [] args){
int age;
int newAge=age+10; //编译出错 可能尚未初始化的变量,因为 age 没初始化
System.out.println("再过10年 ,年龄变成了"+newAge );
}
--作用域: 变量在不同的程序块中的生命周期
2.1 变量的类型
从大方向上分 两 类
基本数据类型 一共有8种
==数值型
--整型 (byte,short,int,long )
--浮点型(float,double)
例子: float pai =3.14 //出错 因为3.14 后面没有标识,所以它默认是double类型
==布尔型
boolean //取值只有 true ,false
==字符型
char //只能装一个字符,汉字能装下(因为在java中,一个char占两个字节) char name='张'
引用类型
-- 类 class
-- 接口 interface
---数组
2.1 基本数据类型的取值范围
== byte 一个字节 //8位有符号整数 取值范围在 -128 127 之间
== short 2 个字节 //16位有符号整数 -32768 32767 之间
== int 4 个字节 //32位有符号整数 -214783468 -- 214783467 之间
== long 8 个字节 //64位有符号整数
== char 2 个字节 //16位unicode字符 char x=65, 如果打印x 得到 A
== float 4 个字节 32位浮点数
== double 8 个字节 64位浮点数
== boolean 1 个字节
2.3 类型转换
//例一
byte a =10;
a=a+5; 编译出错,因为编译的时候不能确定变量的值,计算结果提升为int型了
//例二
final int b=20;
byte a=b; 编译成功 ,因为b声明成了常量,编译的时候能确定最终的值
//例三
'A' +2 =67
在进行赋值或运算的时候,要求参与运算的变量类型相同,否则要进行类型转换
转换的方式有两种
自动类型转换
比如 byte a=10 ,int b=20; b=a ; //这里会进行自动类型转换
强制类型转换
int a=90;
byte b=(byte)a;
3、进制转换
常用的进制
八进制 满8进一 用0开头
十六进制 以0x开头,满16进一 0xF6Fd5f, 0xAAABBBB, 0X8888
二进制 0B010101 , 0B0101-00110101-00011001; //加 - 就是为了看着方便,至于加到什么地方无所谓
十进制
计算机中所有的数据都是二进制表示的
字符 'K' 的二进制数是多少 ? System.out.println(Integer.toBinaryString('K'));
八进制 把二进制数,三位一组表示 1101010001001011 -> 1 101 010 001 001 011 - > 152113
十六进制 把二进数 四位一组表示 1010100111001000101101 ->10 1010 0111 0010 0010 1101 2A722D
进制转换:
== 十 进制转2进制 : 除 2 取余
8 -> 1000
9 ->1001
6 ->110
== 二进制转10进制:
110 -> 0*2^0 +1*2^1 +1*2^2
负数的表现形式
是正位的按位取反 +1
-6 在内存中是如何存的
0000 0110 ->6
1111 1001 按位取反
1
---------------
1111 1010 -6 负数的高位全是1 (因为是按位取反来得到的)
//例子
int a=128
byte b =(byte) a;
最后b的值是多少 ? 10000000 //它是一128在内存中的表现形式
4、运算符
== 算术运算符
需要注意的 除法
int x=1500;
x=x/1000*1000;
? x //1000 对于整型来说,做除法运算,除后的结果,也是整型
需要注意的 求余 (就是相除,求余数) 又叫取模
8%5 = 3
2 % 5 =2
-2 %5 =-2
需要注意的 自增和自减运算 ++ --
问 ++b 和 b++有什么区别
int a=10;
int b=10;
a=b++; //先进行的是 a=b ,然后 b再自增
System.out.println(a); //10
System.out.println(b); //11
如果上面的表达式写成 a=++b ; 则最后 a的值是11,b的值也是 11
字符串相加
String str="你好" + "中国人"; //你好中国人
System.out.println("1+5 =" +1+5 ); //1+5 =15
转义字符
通过 \ 来改变后面的字符的含义
\n //换行
\b //退格
\r //回车
\t //相当于按下tab键
System.out.println("java 39期的学员\n你们辛苦了");
System.out.println("java 39期的学员你们 \t辛苦了");
== 赋值运算符
//例一 可以
int a=5;
a=a+5;
//例二
byte a=5;
a=a+5; // 编译出错
//例三
byte a=5;
a+=5; //可以,只做一次赋值运算,效率高
== 关系运算符
== != >= instanceof //一定要记住 instanceof 它是运算符,不是函数
经过关系运算符运算返回的结果 是 boolean类型
== 逻辑运算符
& 与
| 或
^ 异或
! 非
与 就是参与运算的两边必须都为 1 结果才为1
1 0 ->0
0 0 ->0
1 1 ->1
或 就是参与运算的两边只要有一边是1,结果就为1
1 1-> 1
1 0-> 1
0 1-> 1
0 0-> 0
非 就是反来的取反
1 ->0
0 ->1
异或 参与运算的双方,如果相同,结果为假,如果不同,结果为真
1 0 ->1
0 1 ->1
1 1 ->0
0-0 ->0
&& 短路与 如果判断过程中,有一个条件不满足,则直接返回false,后面的条件就不判断了
|| 短路或
== 位运算符
~
&
|
^ //一个数和另一个数进行两次异或,结果是这个数本身
<< 左移 左移一次,相当于乘2 如何快速的计算 2*8 // 2<<3;
>> 右移 右移一次,相当于除2 移出来的高位,原来是0就被0,原来是1就补1
>>> 无符号右移 高位补0
== 条件运算符 (三元运算符)
int age=100;
int yanglaojin = age > 60 ? 10000 : 0;
System.out.println(yanglaojin);
5、流程控制语句(顺序,选择)
顺序结构
选择结构
循环结构
== 选择结构
//例一
int age=50;
if(age>20) //if 后面的扩号中间,是条件表达式,返回的是true 或 false
System.out.println("可以考大学了");
System.out.println("这句和上面的if没有有任何关系");
//例二
int age = 100;
if (age > 60) {
System.out.println("可以退休了");
}
else {
System.out.println("还要等几年");
}
//例三
age>60 ? System.out.println("可以退休了"):System.out.println("还要等几年") //这个写法不可以,出错,因为三元表达式是要用来进行赋值的
//例四
String str;
str= age>60 ?"可以退休了":"还要等几年";
System.out.println(str);
//例五 输入一个月份,判断它属于哪个季度
import java.util.Scanner; //由于使用了 Scanner 这个类,要导包
class Test
{
public static void main(String [] args)
{
System.out.println("请输入一个月份");
Scanner scan=new Scanner(System.in);
int month=scan.nextInt();
if(month>=1&&month<=3)
{
System.out.println("一季度");
}
else if(month>=4&&month<=6)
{
System.out.println("二季度");
}
else if(month>=7&&month<=9)
{
System.out.println("三季度");
}
else if(month>=10&&month<=12)
{
System.out.println("四季度");
}
else
{
System.out.println("输入的月份错误");
}
}
//例六
输入一个成绩
0-20 分之间:这孩子完蛋了
21-40 之间:这孩子太操心了
41-60 之间:赶紧救救吧
61-80 之间:祖国的希望
81-100 之间:开什么玩笑,一定是抄的
-------------------------------------------------------------------
//例七 嵌套
int age=100;
if(age>0)
{
System.out.println("可以确定,这是一个存在过的人");
if(age>10)
{
System.out.println("一定上过小学");
if(age>60)
{
System.out.println("可以退休了");
System.out.println("但退休金不高");
}
}
else
{
System.out.println("估计还没过小学");
}
}