注释规范
/**
这是我的Hello World 程序
@author LiHaoyue
*/
class Demo
{
/*着是主函数,是程序的入口
它的出现可以保证程序的独立运行,
*/
public static void main(String[] args)
{
//着是输出语句用于将括号内的数据打印到控制台
System.out.println("Hellow World");//println是打印完输出字符串后换行.如不换行用print函数
}
}
常量类型
- 整数常量
- 小数常量
- 布尔型常量
- 字符常量:将一个数字、字母、符号用”表示
- 字符串常量:将一个或多个字符用双引号标识
- null常量
进制
- 十进制 二进制 十进制
- 负数的二进制,就是取反加一
- 负数的二进制最高位是1
变量的数据类型
整数类型:
- byte 8bit 1字节 -128~127
- short 16bit 2字节 -32768~32767
- int 32bit 4字节(默认) -214783648~2147483647
- long 64bit 8字节
- 浮点类型:
- float 4字节
- double 8字节(默认)
- 布尔型:boolean
- 字符型:char 2字节
class VarDemo
{
public static void main(String[] args)
{
//定义变量的格式;
//数据类型 变量名=初始化值;
//定义一个int类型变量.取值为4;
int x=4;
System.out.println(x);
x=10;
System.out.println(x);
//演示其它数据类型
byte b=2;//-128~127
//byte b1=128; 128超出范围会报错
long l=4l;//4后面加l表示该4为long型常数;
float f =2.3f;//如果不加f就会报错,因为默认常数2.3为双精度double类型;
char ch='4';
char ch1='a';
char ch3='';
boolean bo =true;
boolean bo1 =false;
/*
什么时候定义变量?
当数据不确定的时候,需要对数据进行存储时就定义一个变量来完成存储动作
*/
int a= 5;
a=a+6;
//类型的转换;
byte b=3;
b=b+2;
System.out.println(b);
}
}
类型的转换
- 类型的转换
byte b=3;//尽管3是int型有4个字节,但 是赋值时会自动判断是否在byte的取值范围内,所以可以完成赋值;
b=b+2;//这里会报错因为2是4字节的,而变量b是1字节的
System.out.println(b);
- 类型强制转换
b=(byte)(b+2);
- 自动类型提升;
System.out.println('a');//输出为a
System.out.println('a'+1);//输出为98,从char型提升为int型.a对应97,A对应65.'1'对应49,'0'对应48;
int x=4270;
x=x/1000*1000;//结果为x=4000,因为int型除以int型自动去除小数点后的数,转换成int型;
运算符
- ++运算:
b=a++ -->b=a;a=a+1; b=++a-->a=a+1;b=a;
- –运算:同++
- 字符串连接傅 + :
"ad"+"bc";//字符串数据和任何数据使用+都是连接,最终都会变成字符串
"ab"+5+5;//结果为ab55
- 转义字符:通过\来转变字母或符号的含义.
System.out.print("hello \n world");
/*
\n 换行
\b 退格,backspace
\r 按下回车键,window系统,回车符是由两个字符来表示\r\n
\t 制表符.相当于tab键
\" 表示单纯的双引号
\\ 表示单纯的\
*/
- +=运算:
x+=4;//x=x+4; 与x=x+4的区别:有自动转换动作,不丢失精度
- 比较运算符 得到的结果为true false
- ==
- !=
- <
- >
- <=
- >=
- instanceof 检查是否是类的对象
- 逻辑运算符 连接boolean型变量
- & 与
- | 或
- ^ 异或
- ! 非
- && (&无论左边是true false,右边都运算,而&&当左边为false时,右边不运算)
- || (|无论左边是true false,右边都运算,而|当左边为true时,右边不运算)
x>3 &x<6 = true & true =true;
- 位运算符
- << 左移:其实就是乘以2的移动的位数次幂.最高位为0空位就用0补,为1就用1补
- >> 右移:就是除以2的移动的位数次幂.
- >>> 无符号右移:空位都用0补
- & 与运算
- | 或运算
- ^ 异或运算:(一个数异或一个数两次,结果还是那个数.可以加密)
- ~ 反码
6&3;//110&011=010,就是2
6|5;//110|101=111,就是7
6^5;//110^101=011,就是3
~6;//0110,取反就是1001,就是-7
- example:交换数值
- 通过第三方变量
int temp;
temp=n;
n=m;
m=temp;
- 不通过第三方变量
n=n+m;//如果n和m的值非常大,容易超出int范围
m=n-m;
n=n-m;
- 通过异或运算
n=n^m;
m=n^m;//(n^m)^m;
n=n^m;//(n^m)^n;
- 三元运算符
- (条件表达式)?表达式1:表达式2;
- 如果条件为true,运算后结果是表达式1;
- 如果条件为false,运算后结果是表达式2;
程序流程控制
- 判断结构
if (条件表达式)
{
执行语句;
}
else if(条件表达式)
{
执行语句;
}
else
{
执行语句;
}
- 选择结构
用if: 对于布尔型,只能用if结构,而且if可以判断区间,而switch不行
用switch: 判断数值而且数量不多时
swith (表达式)//表达式的值只支持byte int short char
{
case 取值:
执行语句;
break;//如果没有break,则找到对应的case 或default情况后,直接向下执行而不判断case或者default.可以在多个语句对应同一答案的情况下应用
case 取值:
执行语句;
break;
...
default:
执行语句;
break;
}
- 循环结构
- do while : 先执行循环体,在判断条件,条件满足再执行循环体
//定义初始化表达式;
while (条件表达式)
{
循环体(执行语句);
}
- do while : 先执行循环体,在判断条件,条件满足再执行循环体
do
{
循环体
}
while (条件表达式);//记住必须有分号,所有的语句必须以;或者{}结束.
- for
for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
执行语句;
}
- “初始化表达式”中 int x,x的作用范围只在for循环以内,里面可以写任意执行语句,也可以不写
- “循环条件表达式”中 必须是boolean型结果
- “循环后的操作表达式” 多个表达式可以用逗号隔开
- 最简单的循环for(;;)