第一个java程序——HelloWorld
需求:练习一个hello world程序
思路:
1.定义一个类,因为java程序都定义在类中,java程序都是以类的形式存在的,类的形式就是
一个字节码文件最终体现。
2.定义一个主函数,为了让该类可以独立运行。
3.因为演示hello world,在控制台上看到该字样,所以需要输出语句完成。
步骤:
1.用class关键字来完成类的定义,并起一个阅读性强的类名。
2.主函数:public static void main(String[] args) 这是固定格式,jvm认识
3.使用输出语句:System.out.println("hello world");
代码仅仅是思想的一种体现,思路和步骤才是重要的。
*/
class Demo_1$Test //注释
{
public static void main(String[] args)
{
System.out.println("hello java");
}
}
/*
多行
注释
*/
/**
需求:练习变量的定义与使用
*/
class VarDemo
{
public static void main(String[] args)
{
int b=3;
short s=4000;
int x=12;
long q=12345678945623l; //注意后面有个l
float f=2.3f; //后面有个f
double d=1.3;
boolean m=true;
System.out.println(m);
}
}
/**
强制类型转换
*/
class VarDemo2
{
public static void main(String[] args)
{
int x=300;
byte b=5;
x=(byte)(x+b); //强制类型转换,会丢失数据
System.out.println(x);
System.out.println('A'+0); //这里用的是A的ASCII编码值
}
}
几种常见的结构:
判断结构 switch和if:
switch只用于对具体的值进行判断,而且值的个数通常固定,但他会将具体答案全都加载进内存,
效率相对高一点,速度快一点,而if还可以对区间判断,对boolean类型的表达式进行判断,较为常用。
if语句格式1:
if(比较表达式) {
语句体
}
if语句格式2:
if(比较表达式) {
语句体1;
}else {
语句体2;
}
if语句格式3:
if(比较表达式1) {
语句体1;
}else if (比较表达式2) {
语句体2;
}
…
else {
语句体n+1;
}
注意事项:
A:比较表达式无论简单还是复杂,结果必须是boolean类型
B:一般来说:
有左大括号就没有分号,有分号就没有左大括号
switch语句的格式:
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
…
default:
语句体n+1;
break;
}
注意事项:
A:case后面只能是常量,不能是变量。
B:多个case后面的值不能出现相同的。
C:default可以省略吗?
可以。但是不建议。
D:break可以省略吗?
可以。但是不建议。
容易出现case穿透。
E:default的位置一定要在最后吗?
可以在任意位置,建议在最后。
F:switch语句的结束条件
a:遇到break
b:执行到末尾
循环结构 while do while for
do while特点:循环体至少执行一次。
for和while可以互换,但如果需要通过变量来对循环就行控制,该变量值只作为循环增量存在时,
for语句中该变量在循环结束后内存就释放了,后面不能使用了,所以会稍微节省点内存。
无限循环最简单的形式:while(true){} for(;;){}
/*
需求:求1到10的和
*/
class WhileDemo
{
public static void main(String[] args)
{
int i=1; //记录参与加法的数据
int s=0; //记录每一次数据的和
while(i<=10)
{
s=s+i;
i++;
}
System.out.println("s="+s);
}
}
运算符:
^ : 这是异或符号,和或有点不一样。不同之处:true^true=false,其他与或相同。
&&: 双与 若符号左边表达式为假则右边表达式不用执行运算,直接结果为假,而&(单与)无论
如何,两边都会执行。
||: 双或,和双与同理,当左边为true,右边不参与运算。 双与和双或比较常用。
位运算符:^ & | ~ << >> >>>
eg: 6&3=2 运算过程: (1代表真,0代表假) 相当于取出了6的二进制的后二位
110 (6)
&111 (3)
010 (2)
6|3=7 凡是有效位(1就是有效位)全部保留
6^3=5 6^3^3=6 一个数异或同一个数两次,结果还是这个数。利用这个
可以实现加密。异或一次就加密,再异或一次就解密。
~6=-7 反码
3<<2=12 3的二进制011(前面还有29个0没写出来)左移两位就变成1100,就是12
实际上左移几位就是乘2的几次方。
6>>2=1 -6>>1=-3 实际上右移几位就是除以2的几次方。注意6/4=1而不是1.5
对于高位出现的空位,原来是几就补几,等于保留正负号。
-6>>>=3 无符号右移,数据右移时,高位出现的空位,全用0补,等于肯定是正的。
位运算是一种更高效的运算。
交换a,b的值的方法:
1.定义一个中间量c
2.a=a^b; 如a=3,b=5 a=3^5; (这种方法阅读性差,不太实用)
b=a^b; b=(3^5)^5=3;
a=a^b; a=(3^5)^3=5;