java基础语法笔记(小白必看)

键盘录入
导包:import java.util.Scanner;

main函数

Scanner scan = new Scanner(System.in);

String s1 = scan.next();

如果你想要输入的内容是String类型的:
String s1 = scan.next();

如果你想要输入的内容是数值类型的:
int s2 = scan.nextInt();

输入三个数值:
将这三个数值进行从大到小输出??

要求 通过控制台输入你的姓名 性别 年龄 身高 和性格 ,做一个简单的自我介绍

运算符:
1、算术运算符
+、-、*、/、%

  • :字符串的连接

2、赋值运算符
=、+=、-=、*=、/=、%=、<<=、>>=、>>>=

3、比较运算符

、<、>=、<=、!=、==

4、逻辑运算符
&、|、!、&&、||、^
&:无论第一个表达式是真是假,他都去执行第二个表达式

&&:如果第一个表达式为fasle ,就不执行第二个表达式

||:如果第一个表达式为true,就不执行第二个表达式

5、三目运算符

int a = x > y ? 200 : 300 ;

6、位运算符
按位与:&
按位或:|
按位异或:^
按位取反:~
左移:<<
右移:>>
无符号右移:>>>

<<: 左移
2<<2 2<<3
左移:逐渐增大,24=8,28=16. 22(2)=8,22(3)=16,这个数乘以它左移的个数次幂(以2为基数)
00000000 00000000 00000000 00001000 8
00000 00000000 00000000 00000010000 16

: 右移
8>>2 4>>1 6>>2
右移:逐渐减小,8/4=2,4/2=2 ,8/2(2)=2,4/2(1)=2,这个数除以它右移的个数次幂(以2为基数)
如果最高位是0,你右移多少位就在你的最高位补上多少个0
如果最高位是1,你右移多少位就在你的最高位补上多少个1

6/2(2)=1

0000000000 00000000 00000000 000010 2
000000000 00000000 00000000 0000010 2

: 不带符号右移

无论你的最高位是0还是1 你右移多少位都在你的最高位补上多少个0

按位与:&
2 & 3
010
&011
——————
010
结果为:2

4 & 6
100
&110
——————
100
结果为:4

3 & 5
011
&101
——————
001

1 & 2
001
&010
——————
000

结果为:0

按位或:|

3 | 4

011
|100
——————
111
结果为:7

2 | 3

010
|011
——————
011
结果为:3

12 | 15
1100
|1111
——————
1111
结果为:15

按位异或:^
2 ^ 3

010
^011
——————
001
结果为:1

4 ^ 7

100
^111
-————
011
结果为:3

27 ^ 25

11011 64 32 16 8 4 2 1
^11001
————————
00010
结果为:2

位求反:~
5的补码是它本身(ps:正数的原、反、补码都是它本身;负数的原码最高为为1开头,反码是最高符号位不变,其余位在原码的基础上取反,

原码: 1111 0010
反码:1000 1101
补码:1000 1110
补码是在反码的基础上+1即可得到)
5的补码:00000101

~5 (也就是5按位取反运算,下面涉及的是补码运算):
00000101按位取反,这里需要将原始01串完全反转过来,不存在最高符号位的概念,取反结果为: 11111010

注意这里的结果是用补码表示的,毕竟这还是机器表示形式,转化为自然语言的编码,把结果转化为原码就是:
补码-1转为反码: 11111010 - 1 = 11111001
反码再取反转为原码:11111001 = 10000110
原码转为十进制,答案就是-6
7、优先级

控制流程:
分支结构if:

1、if(这个条件满足){
执行代码;
}

如果明天天气好,我们就去打球。

2、if(a > b){
System.out.println(a);

}else{
System.out.println(b);
}

三目运算符:int c = a > b ? a : b;

三目运算符是if else的一个简化。

3、if(这个条件满足){
执行代码;
}else if(这个条件满足){
执行这里面的代码;
}…
{

}else{
执行最后的代码;
}

顺序结构:

System.out.println(a);
System.out.println(b);
System.out.println©;
System.out.println(d);
System.out.println(e);

int x = 5;

switch(x){
case 1:
System.out.println(“星期一”);
break;
case 2:
System.out.println(“星期二”);
break;
case 3:
System.out.println(“星期三”);
break;
case 4:
System.out.println(“星期四”);
break;
case 5:
System.out.println(“星期五”);
break;
case 6:
System.out.println(“星期六”);
break;
case 7:
System.out.println(“星期天”);
break;
default:
System.out.println(“出错啦!”);
break;

}

语法格式:

switch(表达式){
//case里面的break必须给他写上。
case 常量值1:
语句块1;
break;
case 常量值2:
语句块2;
break;
case 常量值3:
语句块3;
break;

default:
	语句块n+1;
	break;//default里面的break可写可不写

}

执行过程:
1、入口
当switch(表达式)的值与case后面的某个常量值匹配上,那么就从这个case进入;
当switch(表达式)的值与case后面的所有的常量值不匹配,那么就从default分支进入;
注意:一旦从“入口”进入switch,就是顺序往下执行,直到遇到“出口”。

2、出口
a、中断出口:
遇到break就跳出。
b、自然出口:
遇到switch的结束 } 就跳出。

switch语句中的规则:
1、switch中的变量类型:byte、short、int、long、char。最常用的是int
2、switch语句可以拥有多个case语句,并且每一个case后面跟一个要比较的值和冒号。
3、case中的值的类型必须和switch中值的类型一致。
4、当switch里面值和case里面的值匹配上之后,执行case后面的语句,直到break语句的时候才会跳出switch语句。
5、如果case后面没有break,执行的时候,继续往下执行,直到遇见break。才会跳出switch。
6、switch语句可以包含一个default分支,里面的break可写可不写。位置灵活,但是通常放在最后。
7、case后面只能填写变量的值,不能写范围。

if和Switch的应用场景和特点:
if:
1、对具体的值进行判断。
2、对区间判断。
3、对运算结果是boolean类型的表达式进行判断。

Switch:
1、对具体的只进行判断。
2、值的个数通常是固定的。
对固定的值进行判断时,建议使用Switch语句,因为Switch语句会将具体的答案都进行加载进内存。
效率相对较高。
(Switch功能性较差,书写麻烦,所以没有if常用)

循环结构:
什么是循环??
循环就是在循环条件满足的情况下,反复的执行代码块。
我们为什么要使用循环??
比如
我们要去打印100次hello或者我们想实现1-10的和
这些相同的内容,我们就可以使用循环。

循环的分类:
while循环
格式:
while(boolean表达式){
执行的代码块;
}

执行过程:
先判断表达式的值,如果为true,就执行循环体。
先判断,然后再去执行。

练习一:
需求:打印输出5次hello
//初始化变量
int i = 0;
//循环条件
while(i < 5 ){
//循环体
System.out.println(“hello”);//0 1 2 3 4
//更新循环变量
i++;
}

练习二:
需求:打印输出1-10
int i = 1;
while(i <= 10){
System.out.println(i);//1 2 3 4 5 6 7 8 9 10
i++;
}

练习三:
需求:求1-100的和
int i = 1;
int sum = 0;
while(i <= 100){
sum = sum + i;//sum += i;

i++;
//sum    i
   1     2
   1+2   3
   1+2+3 4
    ...   .
	1+2+...+99 100
	1+..+100 101

}
System.out.println(“1-100的和是:” + sum);

练习四:
需求: 求4的阶乘。//4321
int i = 1;
int sum = 1;
while(i <= 4){
sum = sum * i;//1
234
i++;
}
System.out.println(“4的阶乘是:”+ sum);

练习五:
需求: 求100以内的 偶数 的和。
2 4 6 8 10
第一种方法:
int i = 2;
int sum = 0;
while(i <= 100){
sum = sum + i;
i += 2;
}
System.out.println(“100以内的偶数的和是:”+ sum);
第二种方法:
int i = 1;
int sum = 0;
while(i <= 100){
if(i%2 == 0){
sum = sum + i;
}
i++;

}
System.out.println(“100以内的偶数的和是:”+ sum);

do

while

格式:
do{
语句块;
}while(表达式);

执行过程:
先执行语句块,再去判断表达式的值。若为true,再去执行语句块,否则结束循环。
特点:
先执行,再判断。

练习一:
需求:打印输出5次hello
int i = 0;
do{
System.out.println(“hello”);
i++;
}while(i <= 4);

练习二:
需求: 打印100以内的奇数;
int i = 1;
do{
/*
if(i%2 == 1){
System.out.println(i);
}
*/
System.out.println(i);
i += 2;//i++
}while(i <= 100);

练习三:
需求:打印输出100以内能够被3整除,但是不能被5整除的数。
int i = 1;
do{
if(i%3 == 0 && i%5 != 0){
System.out.println(i);
}
i++;
}while(i <= 100);

总结:
while 和 do-while的区别
while 先执行循环条件,然后在执行循环体。先判断,后执行。
do/while 先执行循环体,然后再去执行循环条件。先执行,再判断
当第一次 就不满足循环条件的时候,while循环就不能执行循环体;do/while 可以执行一次。

int i = 1;
while(i < 1){
System.out.println("…");
i++;
}

do{
System.out.println("…");
i++;
}while(i < 1);

for 循环结构
格式一:
for(i = 1;i < 10; i++){
循环体;
}

格式二:
int i = 1;

for(;i < 10; i++){
循环体;
}

格式三:
int i = 1;
for( ;i < 10; ){
循环体;
i++;
}

格式四:
for(;?{
循环体;
}
相当于我们的while(true)语句;

特点:

for先判断条件,然后再去执行循环体。

如果循环次数确定的情况下,优先选用for循环,循环次数不确定的情况,通常选用while和do/while循环
注意:要防止无限循环,死循环。

多重循环:循环中嵌套其他的循环。
特点:外层循环执行一次,内层循环执行一遍。
第一次进入for循环:先执行表达式一,接着执行表达式二,执行循环体,最后执行表达式三。
第二次:先执行表达式二,接着执行循环体,最后执行表达式三。
练习一:
需求:使用号打印矩形。
for(int i = 1; i <= 5;i++){
for(int j = 1;j <= 5;j++){
System.out.print("
");
}
System.out.println();
}

练习二:
需求:打印直角三角形.
*
**



for(int i = 1;i <= 5;i++){
for(int j = 1;j <= i;j++){
System.out.print("*");
}
System.out.println();
}

练习三:
需求:打印等腰三角形
*




空格:3 2 1 0
*:1 3 5 7

for(int i = 1; i <= 4;i++){
for(int j = 1;j <= 4-i; j++){
System.out.print(" “);
}
for(int k = 1;k <= i2-1;k++){
System.out.print("
”);
}

System.out.println();

}

练习题四:
需求:打印九九乘法表
11=1
1
2=2 22=4
1
3=3 23=6 33=9

for(int i = 1;i <= 9;i++){
for(int j = 1;j <= i ;j++){
System.out.print(j + "" + i + “=” + ij + “\t”);
}
System.out.println();
}

练习题五:
需求:打印水仙花数
水仙花数:指一个n位数(n>=3),它的每个位上的数字的n次幂之和等于它本身。
例如:153 13+53+3^3=1+125+27=153

一位自幂数:独身数
三位自幂数:水仙花数
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
七位自幂数:北斗七星数
八位自幂数:八仙数
九位自幂数:九九重阳数
十位自幂数:十全十美数

for(int i = 100;i <= 999;i++){
int baiwei = i/100;
int shiwei = (i%100)/10;//153%100 = 53 53/10 = 5
int gewei = i%10;//153%10 = 3
if(baiweibaiweibaiwei+shiweishiweishiwei+geweigeweigewei == i){
System.out.println(i + “是水仙花数”);
}
}

6. 5文钱可以买一只公鸡,3文钱可以买一只母鸡,1文钱可以买3只雏鸡。
现在用100文钱买100只鸡,那么各有公鸡、母鸡、雏鸡多少只?

for(int i = 0;i <= 20;i++){
for(int j = 0; j <= 33;j++){
for(int k = 0;k <= 300;k++){
if(i + j + k == 100 && i5 + j3 + k/3 == 100){
System.out.println(“公鸡是:”+ i + “\t”+“母鸡是:”+ j + “\t”+“小小鸡是”+ k);
}
}
}
}

4.计算 1+2-3+4-5+6-7…+100的结果**//2+4+6+8+…+100-3-5-7-9-…-99

规律:
主要是偶数累加减掉奇数
int sum = 0;
for(int i = 2;i <= 100;i++){
if(i%2 == 0){
sum = sum + i;//sum += i;

}else if(i%2 != 0){
	sum = sum - i;
}

}
System.out.println(sum+1);




**
*

分析:有5行,列数会发生变化
i是控制空格,j是控制*
第一行:i = 0;i < 5; j = 0;j < 5;
第二行:i = 1;i < 5; j = 0;j < 4;
第三行:i = 2;i < 5; j = 0;j < 3;

       ....

j < (5 - i)

for(int i = 0; i < 5;i++){
for(int j = 0;j < (5 - i));j++{
System.out.print("*");
}
System.out.println();
}

跳转语句

用于实现循环执行过程中的程序流程的跳转。

break 语句 :中断
在switch 条件语句和循环语句中都可以使用break语句,当它出现在switch语句中时,用来终止某个case并且跳出switch结构;
当它出现在循环语句中时,用来跳出循环语句,终止循环。
break 格式:break;

public class Test{
public static void main(String[] args){
int i = 3;
switch(i){
case 1:
System.out.println(“星期一”);
break;
case 2:
System.out.println(“星期二”);
break;
case 3:
System.out.println(“星期三”);
break;
case 4:
System.out.println(“星期四”);
break;
case 5:
System.out.println(“星期五”);
break;
case 6:
System.out.println(“星期六”);
break;
case 7:
System.out.println(“星期天”);
break;

	}		
}

}
输出结果:星期三,说明当执行到case 3 时满足条件,执行break,跳出整个switch结构。

循环语句(单层循环)
当它出现在循环语句中时,用来跳出循环语句,终止循环。
public class Test1{
public static void main(String[] args){
int i = 1;
while(true){
if(i == 3){
break;
}else{
System.out.println(i);//1 2
}
i++;
}
}
}

continue 语句 翻译:继续

continue 语句用在循环语句中,主要是用来终止本次循环,执行下一个循环。

public class Test2{
public static void main(String[] args){
int sum = 0;
for(int i = 1;i <= 100;i++){
if(i%2 == 0){
continue;
}
sum += i;
}
System.out.println(sum);

}

}

return 语句 翻译:返回
return 语句用于结束一个方法,跳转到上层调用的方法。

break 和 continue 的比较

单层循环中,break跳出单层循环,continue跳出当前循环,继续执行下一次循环。
嵌套循环中,break跳出当前循环,只是跳出当前的这一层循环,如果想要跳出所有的循环,需要逐层加break;
嵌套循环中,continue跳出当前循环,只是跳出当前的这一层循环,如果想要跳出所有的循环,需要逐层加continue;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值