运算符(1-4重点掌握)
- 算数运算符:+,-,*,/,%,++,–
- 赋值运算符:=
- 关系运算符:>, <, >=, <=, ==, !=instanceof
- 逻辑运算符:&&, ||,!
- 位运算符:&,|,^, ~, >>, <<, >>>(了解!!!)
- 条件运算符:?, :
- 拓展赋值运算符:+=,-=,*=,/=
//二元运算符
//ctrl+D :复制当前行到下一行
int a = 10;
int b = 20;
int c = 30;
int d = 40;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double)b);
long a = 122222222222222222L;
int b = 123;
short c = 10;
byte d = 8;
System.out.println(a+b+c+d); //long
System.out.println(b+c+d); //int
System.out.println(c+d); //int
//关系运算符返回的结果:正确,错误 布尔值
int a = 10;
int b = 20;
int c = 22;
System.out.println(c%b); //取余
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
自增自减运算符,初识math类
//++ -- 自增 自减
int a = 3;
int b = a++; //执行完这行代码后,先给b赋值,再自增
//a++ a = a + 1
System.out.println(a);
int c = ++a; //执行完这行代码后,先自增,后赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
//幂运算
//使用工具类来操作
double pow = Math.pow(2,3);
System.out.println(pow);
逻辑运算符
//逻辑运算符
//与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(a && b));//逻辑与,两个变量都为真,结果才为true
System.out.println("a || b :"+(a || b)); //逻辑或,两个变量有一个为真,则结果才为true
System.out.println("! (a && b):"+!(a && b)); //逻辑非,如果为真,则变为假
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);//逻辑与,如果c<4为假,就不会执行c++<4;
System.out.println(d);
System.out.println(c); //c的值为5
位运算
/*
* A = 0011 1100
* B = 0000 1101
*
* A&B = 0000 1100 //全1为1,有0为0
* A|B = 0011 1101 //全0为0,有1为1
* A^B = 0011 0001 //相同为0,不同为1
* ~B = 1111 0010 //取反
*
*
* */
//2*8=16 2*2*2*2
//效率极高!!!
//<< *2
//>> /2
/*
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3); //16
三元运算符及小结
int a = 10;
int b = 20;
a += b; //a = a + b
System.out.println(a);
//字符串连接符 + ,String
System.out.println(""+a+b); //3020
System.out.println(a+b+""); //50
//三元运算符
//x ? y : z
//如果x==true,则结果为y,否则结果为z
int score = 80;
String type = score < 60 ?"不及格":"及格"; //必须掌握
//if
System.out.println(type);
包机制
package pkg1[. pkg2[. pkg3……]];
一般利用公司域名倒置作为包名:
com.baidu.www
为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用“import”语句可以完成此功能
import package1[.package2……].(Classname|*);
package com.kuang.operator;
import com.kuang.operator.*; //导入全部 *为通配符
javadoc
javadoc命令是用来生成自己API文档的
参数信息
- @author 作者名
- @version 版本号
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况
package com.kuang.operator;
/**
* @author Hao
* @version 1.0
* @since 1.8
*/
public class Demo10 {
String name;
/**
* @author Hao
* @param name
* @return
* @throws Exception
*/
public String test(String name) throws Exception{
return name;
}
//通过命令行 javadoc 参数 java文件
//面向百度编程
}
java流程控制
- 用户交互Scanner
- 顺序结构
- 选择结构
- 循环结构
- break & continue
Scanner对象
通过Scannery类获取用户的输入
基本语法:
Scanner s = new Scanner(System.in);
import java.util.Scanner;
public class Demo3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入字符串:");
String str = scanner.nextLine();
System.out.println("输入的内容为:"+str);
scanner.close();
}
}
通过Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext() 与 hasNextLine() 判断是否还有输入的数据。
next() hasNext()
- 一定要读取到有效字符后才可以结束输入
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
- 只有输入有效字符后才能将其后面输入的空白作为分隔符或者结束符
- next() 不能得到带有空格的字符串
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
//创建一个扫描器对象,用于存放键盘收据
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方法接受:");
//判断用户有没有输入字符串
if (scanner.hasNext()){
String str = scanner.next(); //程序会等待用户输入完毕
System.out.println("输出的内容是:"+str);
}
//凡是属于IO流的类如果不关闭会一直占用资源,要养成好习惯用完就关掉
scanner.close();
}
next() hasNextLine()
- 以Enter为结束符,NextLine()方法返回的是输入回车之前的所有字符。
- 可以获得空白
import java.util.Scanner;
public class Demo2 {
public static void main(String[] args) {
//创建一个扫描器对象,用于存放键盘收据
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextLine方式接收:");
//判断用户有没有输入字符串
if (scanner.hasNextLine()){
//使用nextLine方式接收
String str = scanner.nextLine();
System.out.println("输入的内容为:"+str);
}
//凡是属于IO流的类如果不关闭会一直占用资源,要养成好习惯用完就关掉
scanner.close();
}
Scanner进阶使用
import java.util.Scanner;
public class Demo4 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//从键盘接收数据
int i = 0;
float f = 0.0f;
System.out.println("请输入整数:");
if (scanner.hasNextInt()){
i = scanner.nextInt();
System.out.println("整数数据:"+i);
}else {
System.out.println("输入的不是整数数据!");
}
System.out.println("请输入小数:");
if (scanner.hasNextFloat()){
f = scanner.nextFloat();
System.out.println("小数数据:"+f);
}else {
System.out.println("输入的不是小数数据!");
}
练习
import java.util.Scanner;
public class Demo5 {
public static void main(String[] args) {
//我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数字:");
//和
double sum = 0;
//计算输入了多少个数字
int i = 0;
//通过循环判断是否还有输入,并在里面对每一次进行求和和统计
while (scanner.hasNextDouble()) {
double x = scanner.nextDouble();
i = i + 1; // i++
sum = sum + x;
System.out.println("你输入了第"+i+"个数据,当前结果sum="+sum);
}
System.out.println("这"+i+"个数字的和是:"+sum);
System.out.println("这"+i+"个数字的平均值是:"+(sum/i));
scanner.close();
}
}
顺序结构
- java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行
- 顺序结构是最简单的算法结构
- 是任何一个算法都离不开的一种基本算法结构
选择结构
- if单项选择结构
- if双选择结构
- if 多项选择结构
- 嵌套的if结构
- switch多选择结构
if单选择结构
语法:
if(){
//如果布尔表达式为true将执行的语句
}
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入内容:");
String s = scanner.nextLine();
// equals()判断字符串是否相等
if (s.equals("Hello")){
System.out.println(s);
}
System.out.println("End");
scanner.close();
}
if双选择结构
语法:
if(布尔表达式){
//如果布尔表达式的值为true
}else{
//如果布尔表达式的值为false
}
import java.util.Scanner;
public class Demo2 {
public static void main(String[] args) {
//考试分数大于60分就是及格,小于60分就不及格
Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩:");
int score = scanner.nextInt();
if (score>60){
System.out.println("及格");
}else {
System.out.println("不及格");
}
scanner.close();
}
}
if多选择结构
语法:
if(布尔表达式1){
//如果布尔表达式1的值为true执行代码
}else if(布尔表达式2){
//如果布尔表达式2的值为true执行代码
}else{
//如果以上布尔表达式都不为true执行代码
}
import java.util.Scanner;
public class Demo3 {
public static void main(String[] args) {
//考试分数大于60分就是及格,小于60分就不及格
Scanner scanner = new Scanner(System.in);
/*
if 语句至多有1个else语句,else 语句在所有的 else if 语句之后。
一旦其中一个 else if 语句检测为 true, 其他的 else if 以及 else 语句都将跳过执行。
*/
System.out.println("请输入成绩:");
int score = scanner.nextInt();
if (score==100){
System.out.println("S级");
}else if (score<100 && score>=90){
System.out.println("A级");
}else if (score<90 && score>=80){
System.out.println("B级");
}else if (score<80 && score>=70){
System.out.println("C级");
}else if (score<70 && score>=60){
System.out.println("D级");
}else if (score<60 && score>=0){
System.out.println("不及格");
}else{
System.out.println("成绩不合法!");
}
scanner.close();
}
}
嵌套的if结构
语法:
if(布尔表达式 1){
如果布尔表达式 1的值为true执行代码
if(布尔表达式 2){
如果布尔表达式 2的值为true执行代码
}
}
switch多选择结构
switch 语句中的变量类型可以是:
- byte、short、int 或 char
- switch 支持字符串 String 类型了
- case标签必须为字符串常量或字面量
语法:
switch(expression){
case value :
//语句
break; //可选
case value :
//语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句
}
public class Demo4 {
public static void main(String[] args) {
// case穿透(无break) //switch 匹配一个具体的值
char grade = 'F';
switch (grade){
case 'A':
System.out.println("优秀");
break;
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("中等");
break;
case 'D':
System.out.println("及格");
break;
case 'E':
System.out.println("不及格");
default:
System.out.println("未知等级");
}
}
}
代码01
package sturct;
public class Demo5 {
public static void main(String[] args) {
String name = "小明";
//字符的本质还是数字
//反编译 java---class(字节码文件)-------反编译(IDEA)
switch (name){
case "小明":
System.out.println("小明");
break;
case "孙悟空":
System.out.println("孙悟空");
break;
default:
System.out.println("弄啥嘞!");
}
}
}
代码02(反编译后代码)
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package sturct;
public class Demo5 {
public Demo5() {
}
public static void main(String[] args) {
String name = "小明";
byte var3 = -1;
switch(name.hashCode()) {
case 756703:
if (name.equals("小明")) {
var3 = 0;
}
break;
case 23271124:
if (name.equals("孙悟空")) {
var3 = 1;
}
}
switch(var3) {
case 0:
System.out.println("小明");
break;
case 1:
System.out.println("孙悟空");
break;
default:
System.out.println("弄啥嘞!");
}
}
}
循环结构
- while循环
- do while循环
- for 循环
- Java5中引入了一种主要用于数组的增强型for循环
while循环
语法:
while(布尔表达式){
//循环内容
}
- 只要布尔表达式为true,循环就会一直执行下去。
- 我们大多数情况下会让循环停下来,我们需要一个让表达式失效的方式来结束循环。
- 少部分情况需要循环一直执行,比如服务器的请求响应监听等。
- 循环条件一直为true就会造成无限循环【死循环】,正常的业务编程中应该尽量避免死循环。会影响程序性能或者造成程序卡死崩溃。
package sturct;
public class Demo6 {
public static void main(String[] args) {
//输出1~100
int i = 0;
while (i<100){
i++;
System.out.println(i);
}
}
}
package sturct;
public class Demo7 {
//死循环
public static void main(String[] args) {
while (true){
//等待客户端连接
//定时检查
//。。。。。
}
}
}
练习:
package sturct;
public class Demo8 {
public static void main(String[] args) {
//计算1+2+3+……+100=?
//高斯的故事
int i = 0;
int sum = 0;
while (i<=100){
sum = sum + i;
i++;
}
System.out.println(sum);
}
}