- javase基础(第一章)
- 一、赋值运算符
- 二、关系运算符
- 三、逻辑运算符
- 四、位运算符
- 五、三元运算符
- 六、条件判断语句
- 七、选择语句
- 八、循环语句
- 1、for循环
- for循环语句格式
- 2、while循环
- while循环语句格式
- 3、do while循环
- do...while循环语句格式
- 九、跳转控制语句
- 1、continue
- 2、break
- 十、Random类
- 练习题:
例题:
public class Test1 {
public static void main(String[] args) {
int a=10;//赋值
int n=5;
a+=n;//加后赋值,a=15
System.out.println(a);
a-=n;//减后赋值,a=10
System.out.println(a);
a*=n;//乘后赋值,a=50
System.out.println(a);
a/=n;//除后赋值,a=10
System.out.println(a);
}
}
二、关系运算符
class Test {
public static void main(String[] args) {
// 关系运算符
// 1、==
int a=10;
int b=20;
System.out.println(a==b);// false
// 2、!=
System.out.println(a!=b);// true
//3、>
System.out.println(a>b);//false
//4、>=
System.out.println(a>=b);//false
//5、<
System.out.println(a
三、逻辑运算符
class Test {
public static void main(String[] args) {
// 逻辑运算符
// 1、& 一假必假
System.out.println(true & false);
System.out.println(true & true);
System.out.println(false & false);
System.out.println("------------------");
// 2、| 一真必真
System.out.println(true | false);
System.out.println(true | true);
System.out.println(false | false);
System.out.println("------------------");
// 3、^ 不同为真,相同为假
System.out.println(true ^ false);
System.out.println(true ^ true);
System.out.println(false ^ false);
System.out.println("------------------");
// 4、! 真即是假,假即是真
System.out.println(!true);
System.out.println(!false);
System.out.println("------------------");
char ch = 'a';
int number1 = 96;
System.out.println(ch & number1);
}
}
四、位运算符
Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。
位运算符作用在所有的位上,并且按位运算。
下表列出了位运算符的基本运算,假设整数变量 A 的值为 60 和变量 B 的值为 13:
| 操作符 | 描述 | 例子 |
|---|---|---|
| & | 如果相对应位**都是1**,则结果为1,否则为0 | (A&B),得到12,即0000 1100 |
| | | 如果相对应位==都是 0==,则结果为 0,否则为 1 | (A | B)得到61,即 0011 1101 |
| ^ | 如果相对应位值相同,则结果为0,否则为1 | (A ^ B)得到49,即 0011 0001 |
| 〜 | 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 | (〜A)得到-61,即1100 0011 |
| << | 按位左移运算符。左操作数按位左移右操作数指定的位数。 | A << 2得到240,即 1111 0000 |
| >> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 | A >> 2得到15即 1111 |
| >>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 | A>>>2得到15即0000 1111 |
class Test {
public static void main(String[] args) {
int a = 60;
int b = 13;
int c = 0;
c = a & b;
System.out.println("a & b = " + c );
c = a | b;
System.out.println("a | b = " + c );
c = a ^ b;
System.out.println("a ^ b = " + c );
c = ~a;
System.out.println("~a = " + c );
c = a << 2;
System.out.println("a << 2 = " + c );
c = a >> 2;
System.out.println("a >> 2 = " + c );
c = a >>> 2;
System.out.println("a >>> 2 = " + c );
}
}
五、三元运算符
public class Day02_demo02 {
public static void main(String[] args) {
int height1 = 150;
int height2 = 210;
int height3 = 185;
int tempHeight = 0;
tempHeight = (height1>height2)?height1:height2;
System.out.println("最高的和尚是:"+((tempHeight>height3)?tempHeight:height3));
}
}
int c = 900;
System.out.println("最后的结果是:"+c);
六、条件判断语句
int a=0;
if(a==1){
System.out.println("今天是晴天");
}
System.out.println("今天是雨天");
int a=0;
if(a==0){
System.out.println("今天是晴天");
}else {
System.out.println("今天是雨天");
}
int a=2;
if(a==0){
System.out.println("今天是晴天");
}else if(a==1){
System.out.println("今天是雨天");
}else {
System.out.println("今天下太阳雨");
}
Scanner in = new Scanner(System.in);
System.out.println("请输入数字:");
int result = in.nextInt();
if (result % 2 == 0) {
System.out.println(result + "是偶数");
} else {
System.out.println(result + "是奇数");
}
// 创建控制台输入类对象
Scanner in = new Scanner(System.in);
//提示用户操作
System.out.println("请输入成绩:");
// 获得用户输入的数字
int result = in.nextInt();
//判断数字的区间
if(result>=95 & result<=100){
System.out.println("奖励自行车一辆");
}else if(result>=90 & result<=94){
System.out.println("游乐场玩一次");
}else if(result>=80 & result<=89){
System.out.println("变形金刚玩具一个");
}else {
System.out.println("胖揍一顿.....");
}
七、选择语句
特别注意:switch(表达式)中的表达式不能为boolean类型、浮点类型
Scanner sc = new Scanner(System.in);
System.out.println("请输入今天是周几:");
int week = sc.nextInt();
switch (week){
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;
}
;
System.out.println("请输入今天是周几:");
int week = sc.nextInt();
switch (week){
case 1:
System.out.println("今天星期一跑步");
break;
case 2:
System.out.println("今天星期二去山区游泳");
case 3:
System.out.println("今天星期三在小区慢走");
case 4:
System.out.println("今天星期四健身房踩动感单车");
case 5:
System.out.println("今天星期五搏击馆练拳击");
break;
case 6:
System.out.println("今天星期六中破山去爬山");
break;
case 7:
System.out.println("今天星期七万达好好吃一顿");
break;
default:
System.out.println("输入错误请重新输入。");
break;
}
八、循环语句
1、for循环
for循环语句格式
案例题1:
求1~5之间的数据和,并把求和结果控制台输出。
代码:
int sum=0;//定义一个变量用来存储和
for (int i = 1; i <6 ; i++) {//使用for循环,得到1~5的数
sum+=i;//计算1~5的总和
}
System.out.println(sum);
案例题2:
求1~100之间的偶数和,并把求和结果控制台输出。
代码:
//定义一个变量用来存储偶数之和,初始值为0
int sum=0;
//设计一个循环,得到1~100的中的偶数
for (int i = 2; i <101 ; i=i+2) {
sum+=i;//计算所有偶数之和
}
System.out.println(sum);//打印输出偶数之和
案例题3:
在控制台输出所有的“水仙花数”
代码:
//定义三个变量存储,三位数的个,十,百位上的数
int ge,shi,bai;
int a=0;
//设计一个循环得到所有的三位数
for (int i = 100; i <1000 ; i++) {
//分别得到这个三位数上的个位,十位,百位
ge=i%10;
shi=i/10%10;
bai=i/100;
//个位的立方加十位的立方加百位的立方如果等于这个三位数,则输出这个数为水仙花数
if((ge*ge*ge+shi*shi*shi+bai*bai*bai)==i){
//打印输出这个数
System.out.print(i+"为水仙花数"+" ");
a++;
if(a%2==0)
System.out.println();
}
}
2、while循环
while循环语句格式
案例题:
世界上最高峰珠穆朗玛峰(8844.43米=8844430毫米),假如有一张足够大的纸,它的厚度为0.1毫米,问:折叠多少次可以折成珠穆朗玛峰的高度?
代码:
int count = 0;//记录次数
double paper = 0.1;
while (paper<8848000){
paper = paper*2;
count++;
System.out.println(paper);
}
System.out.println("要折"+count+"次");
3、do while循环
do…while循环语句格式
案例题1:
求1到100之间所有能被3整除的整数的和。
代码:
int sum=0;
int a=1;
do{
if(a%3==0) {
sum +=a;
}
a++;
}while(a<100);
System.out.println("1到100之间所有能被3整除的整数的和: "+sum);
九、跳转控制语句
1、continue
continue 用在循环中,基于条件控制,跳过某次循环体内容的执行,继续下一次的执行
案例题1:
从任意一个数字开始报数,当你要报的数个位包含7或者是7的倍数时要说:过。
Scanner sc = new Scanner(System.in);
//键盘输入一个数
int res = sc.nextInt();
//设计一个循环,得到res~100的所有整数
for (int i = res; i <1000 ; i++) {
//则求出这个数的个位
int a=i%10;
//如果i是7的倍数或者i包含7则输出过,并跳过本次循环
if(i%7==0 || a==7 ){
System.out.println("过");
continue;
}
//输出所有数
System.out.println(i);
}
2、break
break 用在循环中,基于条件控制,终止循环体内容的执行,也就是说结束当前的整个循环
注意:
1、break语句对if-else的条件语句不起作用。
2、在多层循环中, 一个break语句只向外跳一层。
案例题1:
从任意一个数字开始报数,当你要报的数个位包含7或者是7的倍数时要说:过。并结束游戏。
代码:
Scanner sc = new Scanner(System.in);
//键盘输入一个数
int res = sc.nextInt();
//设计一个循环,得到res~100的所有整数
for (int i = res; i <1000 ; i++) {
//则求出这个数的个位
int a=i%10;
//如果i是7的倍数或者i包含7则输出过,并结束游戏
if(i%7==0 || a==7 ){
System.out.println("过");
break;
}
//输出所有数
System.out.println(i);
}
十、Random类
作用:用于产生一个随机数。
特点:
1、Random类中各方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的几率均等;
2、相同种子数的Random对象,相同次数生成的随机数字是完全相同的;
3、java.util.Random类中实现的随机算法是伪随机,也就是有规则的随机,所谓有规则的就是在给定种(seed)的区间内随机生成数字;
例题1:
中午不知道吃什么,产生随机数,如果是1就吃黄焖鸡,如果是2就吃螺蛳粉,如果是3就吃木桶饭,如果是4就吃花甲粉,都不是就不吃了。
代码:
Random r = new Random();
int number = r.nextInt(5);
System.out.println("产生的随机数是:"+number);
switch (number){
case 1:
System.out.println("恭喜黄焖鸡中奖");
break;
case 2:
System.out.println("恭喜螺蛳粉中奖");
break;
case 3:
System.out.println("恭喜木桶饭中奖");
break;
case 4:
System.out.println("恭喜花甲粉中奖");
break;
default:
System.out.println("不吃了");
break;
}
练习题:
今天有道题一直出错,原题为:
要求用户输入一个0到2之间的整数,如果用户输入0输出“你出的是石头”,如果用户输入1就输出“你出的是剪刀”,如果用户输入的是2就输出“你出的是布”,然后再问是否要继续出拳,如果回答“y”就重复以上过程,否则结束程序。
正确代码为:
Scanner sc = new Scanner(System.in);
while (true){
System.out.println("请输入0~2的整数:");
int next = sc.nextInt();
switch (next){
case 1:
System.out.println("你出的是剪刀");
break;
case 2:
System.out.println("你出的是布");
break;
case 0:
System.out.println("你出的是石头");
break;
default:
System.out.println("输入的数字错误");
}
System.out.println("是否继续出拳:");
String line = sc.next();
if(line.equals("y") || line.equals("Y")){
}else {
break;
}
}
而我错误的地方是把
String line = sc.next();
写成了:
String line = sc.nextLine();
一直想不通,毕竟两种都是键盘输入字符串的方法,为什么nextLine()是错的,后来去百度了一下得到了答案:
**nextLine()的输入是碰到回车就终止输入,而next()方法是碰到空格,回车,Tab键都会被视为终止符。所以next()不会得到带空格的字符串,而nextLine()可以得到带空格的字符串。
而我错误的地方是把
String line = sc.next();
写成了:
String line = sc.nextLine();
一直想不通,毕竟两种都是键盘输入字符串的方法,为什么nextLine()是错的,后来去百度了一下得到了答案:
**nextLine()的输入是碰到回车就终止输入,而next()方法是碰到空格,回车,Tab键都会被视为终止符。所以next()不会得到带空格的字符串,而nextLine()可以得到带空格的字符串。



