java-day02
一.注释
//书写注释是非常好的习惯
//单行注释 //
//多行注释 /* */
//JavaDoc:文档注释 /** */
//平时写代码一定要注意规范
注意:注释不会影响代码
二.运算符
1.算术 单目:~(按位取反)、! (取非)、-(负号运算符)、 ++(自增)、 - -(自减)、
双目:+ - * / %(取余)
三目:a>b?true:false 说明:当a大于b的时候,为true(也就是冒号之前的值),否则为false;这整个运算符包括一个关系运算符 可以是“>”"<""!="等等),一个“?”,一个“:”,冒号前后需要有两个表达式或者是值或者是对象。
2.关系 等于符号*:==,不等于符号:!= ,大于符号:>, 小于符号:<,大于等于符号:>= ,小于等于符号😗<= 。
3.位与逻辑
位运算符 与(&)、非(~)、或(|)、异或(^)
&:双目运算符,运算时均把运算数转换为二进制再做比较,规则:当相同的位上均为1时结果为1,否则结 果为0.如:1010&1101, 转为二进制:1111110010&10001001101,比较结果为:1000000转为十进制: 64。所以1010&1101=64;
| :当两边操作数的位有一边为1时,结果为1,否则为0。如1100|1010=1110
~:0变1,1变0
:两边的位不同时,结果为1,否则为0.如11001010=0110
逻辑运算符 与(&&)、非(!)、或(||)
4.赋值 = += -= *= /= %= &= ^= |= <<= >>=
instanceof 该运算符是双目运算符,左面的操作元是一个对象,右面是一个类或接口。当左面的对象是右面的类(或右边类的子孙类)创建的对象、 或者是右边接口的实现类(或实现类的子孙类)的对象时,该运算符运算结果是true,否则是false。
5.运算符综述 Java 的表达式就是用运算符连接起来的符合Java 规则的式子.运算符的优先级决定了表达式中运算执行的先后顺序.例如,x<y&&!z相当于(x<y)&&(!z),没有必要去记忆运算符号的优先级别,在编写程序时可尽量的使用括号来实现你想要的运算次序,以免产生难以阅读或含糊不清的计算顺序.运算符的结合性决定了并列相同级别的运算符的先后顺序,例如,加减的结合性是从左到右,8-5+3 相当于(8-5)+3.逻辑否运算符 的结合性是右到左, x 相当于!(!x).表3.4是Java所有运算符的优先级和结合性。
6.位移 << 带符号左移 >>带符号右移 >>> 无符号右移
7.运算符优先级 按优先级从高到低排列如下:[ ] ( ) ++ – ! ~ instanceof * / % + - << >> >>> <> < = > \ == != &^& & || ? := op= 。
三.java流程控制(输入)


next
```java
package com.Scaner;
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
//创建一个扫描器对象,用于接受数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方式接收:");
//判断用户有没有输入字符串
if (scanner.hasNext())
{
//使用next方式接收
String str=scanner.next();
System.out.println("输出的是:"+str);
}
//凡是属于IO流的类用完之后要关闭,如果不关闭会一直占用资源,要养成好习惯
scanner.close();
}
}
```
nextLine
package com.Scaner;
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextLine进行输入");
//判断是还有输入
if(scanner.hasNext())
{
String str=scanner.nextLine();
System.out.println("输出的是:"+str);
}
scanner.close();
}
}
四.结构
-
顺序
-
选择
-
if单选择结构 if( )
package com.Struct;
import java.util.Scanner;
public class IfDemo01 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
//equals:判断字符串是否相等
String s=scanner.nextLine();
if(s.equals("Hello"))
{
System.out.println(s);
}
System.out.println("End");
scanner.close();
}
} -
if双选择结构 if( ){ } else{ }
package com.Struct;
import java.util.Scanner;
public class IfDemo02 {
public static void main(String[] args) {
//考试分数大于60及格,小于60不及格
Scanner scanner=new Scanner(System.in);
System.out.println("请输入你的分数");
float score=scanner.nextFloat();
//score:分数
if(score>=60) {
System.out.println("及格");
}
else {
System.out.println("不及格");
}
scanner.close();
}
} -
if多选择结构 if( ){ } else if { } else{}
package com.Struct;
import java.util.Scanner;
public class IfDemo03 {
public static void main(String[] args) {
/**
* 成绩判断
*/
Scanner scanner=new Scanner(System.in);
System.out.println("请输入成绩");
int score = scanner.nextInt();
if(score==100){
System.out.println("恭喜!满分");
}
else if (score>=90&&score<100){
System.out.println("A级");
}
else if (score>=80&&score<90){
System.out.println("B级");
}
else if (score>=70&&score<80){
System.out.println("C级");
}
else if (score>=60&&score<70){
System.out.println("D级");
}
else if (score>=0&&score<60){
System.out.println("不及格");
}
else {
System.out.println("成绩不合法");
}
scanner.close();
}
} -
嵌套的if结构 if( ){ if ( ) }
-
switch 使用switch时 变量可以是字符和String字符串
package com.Struct;
public class SwitchDemo01 {
public static void main(String[] args) {
//case:穿透 switch:匹配具体的值
char c='B';
switch(c){
case 'A':
System.out.println("优秀");
break;
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("及格");
break;
default:
System.out.println("不及格");
}
}
}
-
-
循环
-
while循环
while(布尔表达式) {
//循环内容
}只要布尔表达式为true,循环就会一直执行下去。 我们大多数情况是会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环。 少部分情况需要循环一直执行,比如服务器的请求响应监听等。 循环条件一直为true就会造成无限循环【死循环】,我们正常的业务编程中应该尽量避免死循环。会影响程序性能或者造成程序卡死奔溃!
思考:计算1+2+3+…+100=?
// 计算1+2+3+...+100
int i = 0;
int sum = 0;
while (i<=100){
sum = sum + i;
i++;
}
System.out.println(sum);
} -
do…while循环
对于while语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。 do…while循环和while循环相似,不同的是,do…while循环至少会执行一次。
do {
//代码语句
}while(布尔表达式);While和do-While的区别:
while先判断后执行。do while是先执行后判断! do…while总是保证循环体会被至少执行一次!这是他们的主要差别。
int i = 0;
int sum = 0;
do {
sum = sum + i;
i++;
}
while (i<=100);
System.out.println(sum);
}while()条件不成立,不执行,do-while至少执行了一次(先执行,后判断)。
-
For循环
虽然所有循环结构都可以用while或者do…while表示,但Java提供了另一种语句–for循环,使一些循环结构变得更加简单。 for循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环结构。 for循环执行的次数是在执行前就确定的。 语法格式如下:
for(初始化;布尔表达式;更新){
//代码语句
}练习1:计算0到100之间的奇数和偶数的和
// 练习1:计算0到100之间的奇数和偶数的和
int oddSum = 0;
int evenSum = 0;
for (int i = 0; i <= 100; i++) {
if (i%2!=0){ // 奇数
oddSum+=i;
}
else { // 偶数
evenSum+=i;
}
}
System.out.println("奇数的和:"+oddSum);
System.out.println("偶数的和:"+evenSum);
}练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个
// 练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个
for (int i = 0; i <= 1000; i++) {
if (i%5 == 0){
System.out.print(i+"\t");
}
if (i%(5*3)==0){
System.out.println();
}
// System.out.print(i+"\t"); "\t"输出结果添加空格,不会让得出的结果挤在一起
// printLn输出完会换行
// print输出完不会换行练习3:打印九九乘法表
// 练习3:打印九九乘法表
/*1.我们先打印第一列,这个大家应该都会
2.我们把固定的1再用一个循环包起来
3.去掉重复项,i <= j
4.调整样式
*/
for (int j = 1; j <= 9; j++) {
for (int i = 1; i <= j; i++) {
System.out.print(i+"*"+j+"="+i*j+"\t");
}
System.out.println();
}增强for循环
for(声明语句:表达式){
//代码句子}
-
break & continue
break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用) continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
int i =0;
while (i<100){
i++;
if (i%10==0){ // 用于终止某次循环过程,跳过整十的数,之后再进行下一次循环,不终止程序
System.out.println();
continue;
}
System.out.print(i+"\t");
}
-
五.方法
-
方法的定义
Java的方法类似于其它语言的函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法包含以下语法: 方法包含一个方法头和一个方法体。下面是一个方法的所有部分: 修饰符: 修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。 返回值类型︰方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType是关键字void。 方法名: 是方法的实际名称。方法名和参数表共同构成方法签名。 参数类型: 参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。 形式参数: 在方法被调用时用于接收外界输入的数据。 实参: 调用方法时实际传给方法的数据。 方法体: 方法体包含具体的语句,定义该方法的功能。
public static void main(String[] args) {
int max = max(60,60);
System.out.println(max);
// 调用方法
}
// 比大小
public static int max(int num1,int num2){
int result = 0;
if(num1==num2){
System.out.println("num1==num2");
return num1 & num2; // 终止方法
}
if (num1>num2){
result = num1;
System.out.println("num1大于num2");
}
else {
result = num2;
System.out.println("num2大于num1");
}
return result;
} -
方法的重载
重载就是在一个类中,有相同的函数名称,但形参不同的函数。
方法的重载的规则:
-
方法名称必须相同。
-
参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)。
-
方法的返回类型可以相同也可以不相同。
-
仅仅返回类型不同不足以成为方法的重载。
-
实现理论: 方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。
public class Demo01 {
public static void main(String[] args) {
double max = max(60,60);
System.out.println(max);
// 调用方法
}
/*
* 方法的重载的规则:
方法名称必须相同。
参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)。
方法的返回类型可以相同也可以不相同。
仅仅返回类型不同不足以成为方法的重载。
* */
// 比大小,方法名字必须相同,参数类型不能相同。
public static double max(double num1,double num2){
double result = 0;
if(num1==num2){
System.out.println("num1==num2");
return num1; // 终止方法
}
if (num1>num2){
result = num1;
System.out.println("num1大于num2");
}
else {
result = num2;
System.out.println("num2大于num1");
}
return result;
}
// 比大小
public static int max(int num1,int num2){
int result = 0;
if(num1==num2){
System.out.println("num1==num2");
return num1 & num2; // 终止方法
}
if (num1>num2){
result = num1;
System.out.println("num1大于num2");
}
else {
result = num2;
System.out.println("num2大于num1");
}
return result;
}
}
浙公网安备 33010602011771号