课前复习:
1.变量类型转换
public class code1{
public static void main(String[]args){
long L=234;//自动类型转换
System.out.println(L);
L=248728394789247928244;
Systm.out.println(L );
//float f1=12,3;//12.3是double类型
float f1=(float)(12.3)
}
}
2.字符与字符串
public class code1{
public static void main(String[]args){
char m='a';
char n='b';
System.out.println(m+n);//195=97+98
char c='a';
System.out.println(""+(c+1)+(char)(c+1));//98b
}
}
进制:2进制 十进制 8进制 16进制 所有数据都是以二进制保存的
整数的原码,反码,补码(分为正数,负数)正数的原码,反码,补码三码合一
进制转换:2进制到10进制,8进制,16进制
3.运算符
<1.算数运算符:+-*、% ++ --
/*
算数运算符
*/
public class Text3{
public static void main(String []args){
int i1=10;
int i2=10/2;
int i3=12;
int i4=i3/2;
System.out.println("i2:"+i2);//5
System.out.println("i4:"+i4);//2
double d1=i3/5;
System.out.println("d1:"+d1);
int a=1230;
int b=a/1000;//1;
int c=12/5*5;
System.out.println("b:"+b);
System.out.println("c:"+c);
int j1=12;
int j2=j1%5;
System.out.println("j2:"+j2);//2
j1=12;
j2=j1%-5;
System.out.println("j2:"+j2);//2
j1=-12;
j2=j1%5;
System.out.println("j2:"+j2);//-2
j1=-12;
j2=j1%-5;
System.out.println("j2:"+j2);//-2
//结果与被模数一直
int m1=10;
int m2=m1++;
System.out.println("m1:"+m1);//11
System.out.println("m2:"+m2);//10
m1=10;
m2=++m1;
System.out.println("m1:"+m1);//11
System.out.println("m2:"+m2);//11
//前++ 先加一后赋值
//后++ 先赋值后++
m1=10;
m2=--m1; System.out.println("m1:"+m1);//9
System.out.println("m2:"+m2);//9
m1=10;
m2=m1--;
System.out.println("m1:"+m1);//9
System.out.println("m2:"+m2);//10
short s1=10;
s1=(short)(s1+1);
s1++;//数据类型没变
System.out.println("s1:"+s1);
}
}
<2.赋值运算符 = += -= *= /= %=
int i=10;
i+=2;
System.out.println(i); //12
Int j=10;
J=j+2;
System.out.println(j);
Short s1=10;
s1+=2;
s1=s1+2;
s1=(short)s1+2;
class Text4{
public static void main(String[]args){
int i1=10;
//i1=i1+5;
i1+=5;//i1=i1+5;
double d=15;
d*=0.2;//d=d*0.2;
System.out.println("i1:"+i1);
System.out.println("d:"+d);
short s=10;
s+=2;//s=s+2;
System.out.println("s:"+s);
int i=1;
i*=0.1;
System.out.println(i);//0
i++;
System.out.println(i);//1
}
<3.比较运算符 == > < >= <= instanceof
比较运算符的结果为Boolean类型的值
4>=3返回的是true 表示的是4>3||4==3
If(3<i<5)//不对
If(i>3&&i<5){}
<4.逻辑运算符 & && | ^ !
>逻辑运算符比较的是boolean的值
& &&的区别
& | 当符号左端为假时程序会继续执行符号又端的
class Text7{
public static void main(String[] args){
boolean b1=true;
boolean b2=false;
System.out.println(b1 & b2);
System.out.println(b1 && b2);
System.out.println(b1 | b2);
System.out.println(b1 || b2);
System.out.println(b1 ^ b2);
System.out.println(!b1);
//&当符号左端为假时程序会继续执行符号又端的
int i1=10;
if(b2 & i1++>0){//全部判断完
System.out.println("条件为真");
}else{
System.out.println("条件为假");
}
System.out.println("i1:"+i1);
int i2=10;
if(b2 && i2++>0){//短路判断
System.out.println("条件为真");
}else{
System.out.println("条件为假");
}
System.out.println("i2:"+i2);
if (b2 & 10/0 >2){
System.out.println("Hi Hi");
}
//| and ||的区别
int j1=10;
if(b1 | j1++>0){
System.out.println("条件为真");
}else{
System.out.println("条件为假");
}
System.out.println("j1="+j1);
int j2=10;
if(b1 || j2++>0){
System.out.println("条件为真");
}else{
System.out.println("条件为假");
}
System.out.println("j2="+j2);
}
}
<5.位运算符 << >> >>> & | ^ ~
总结:<<:整数
class Text8{
public static void main(String[] args){
int a=31;
int b=a<<2;
System.out.println(b);//124 =31*4
System.out.println(2<<3);//16
System.out.println(31<<28);//-26843546
a=-31;
b=a>>2;
System.out.println(b);
b=a>>>2;
System.out.println(b);
}
}
[例子]如何交换两个整数的值
class Text9{
public static void main(String[] args)
{
int m=12;
int n=5;
System.out.println("m:"+m+" n,"+n);
int temp =m;
m=n;
n=temp;
System.out.println("m:"+m+" n,"+n);
m=m+n;//m=17;
n=m-n;//12=17-5
m=m-n;//5=17-12
System.out.println("m:"+m+" n,"+n);
m=m^n;
n=m^n;
m=m^n;
System.out.println("m:"+m+" n,"+n);
}
}
/*
*/
class TestReview{
public static void main(String[] args){
long l = 2341;//自动类型转换
System.out.println(l);
long l1 = 1431542366346123L;//直接赋值
System.out.println(l1);
float f1 = 12.3F;//编译出错。因为12.3是double类型的
//byte short char 三者之间运算的结果为int型
char m = 'a';
char n = 'b';
System.out.println(m + n);//195 = 97+98
char c = 'a';
System.out.println(c + 1);//98
System.out.println((char)(c + 1));//b
//如何手动实现整型数值60的二进制到十六进制的转换
String str1 = Integer.toBinaryString(60);
String str2 = Integer.toHexString(60);
System.out.println(str1);
System.out.println(str2);
int i1 = 60;
int i2 = i1&15;
String j = (i2 > 9)? (char)(i2-10 + 'A')+"" : i2+"";
int temp = i1 >>> 4;
i2 = temp & 15;
String k = (i2 > 9)? (char)(i2-10 + 'A')+"" : i2+"";
System.out.println(k+""+j);
}
}
<6.三元运算符
格式(条件表达式)? 表达式1 : 表达式2
/*
三元运算符
(条件表达式)?表达式1 :表达式2
返回一个结果
结果的数据类型取决于表达式1.表达式2的数据类型
两个表达式的数据类型要一直
*/
class Text10{
public static void main(String[] args)
{
int i=20;
int j=20;
//取出最大值
String max=(i>j)?"i大":(i==j)?"相等":"j大";
System.out.println(max);
}
}
class Text12{
public static void main(String[] args)
{
//4,2,1
int a=13;
int b=12;
int c=5;
int max=0;
max=(a>b?(a>c?a:c):(b>c?b:c));
System.out.println("max="+max);
}
}
4.流程控制:
<1顺序结构:
<2.分支结构:
(1)条件判断 if if else if else if else if else
说明: 一旦满足(即返回true)就到相应的{}执行
import java.util.*;
class Text15{
//如何从键盘输入
/*
1.导入java.util.Scanner类
2如果多个条件间是互斥关系,那么多个if else if谁上谁下不影响
3如果多个条件是包含关系,要将范围小的放在范围大的上边
*/
public static void main(String[] args){
Scanner s=new Scanner(System.in);
//调用方法,获取信息
//String a=s.next();
//4.操作
//System.out.println(a);
int score=s.nextInt();
if(score==100){
System.out.println("奖励一个BOMA");
}else if(score>80 && score<=90){
System.out.println("奖励一个IPone");
}else if(score>=60&&score<=80){
System.out.println("奖励一个参考书");
}
else{
System.out.println("什么都没有");
}
}
}
本次课
<3.循环结构:
import java.util.*;
public class code2{
public static void main(String[]args){
Scanner s=new Scanner (System.in);
System.out.println("请输入第一个整数");
int num1 = s.nextInt();
System.out.println("请输入第二个整数");
int num2 = s.nextInt();
System.out.println("请输入第三个整数");
int num3 = s.nextInt();
if(num1>num2){
if(num3>num1){
System.out.println(num2+"<"+num1+"<"+num3);
}else if(num3<num2){
System.out.println(num3+"<"+num2+"<"+num1);
}else{
System.out.println(num2+"<"+num3+"<"+num1);
}
}else{
if(num3>num2){
System.out.println(num1+"<"+num2+"<"+num3);
}else if(num3<num1){
System.out.println(num3+"<"+num1+"<"+num2);
}else{
System.out.println(num1+"<"+num3+"<"+num2);
}
}
}
}
注意:
public class code3{
public static void main(){
int i=2;
if(i<0)
System.out.println("Hello Word!");
System.out.println("word");
else
System.out.println("Hello");
}
}
/*
大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,
当然要提出一定的条件:
高:180cm以上;
富:财富1千万以上;
帅:是。
如果这三个条件同时满足,则:“我一定要嫁给他!!!”
如果三个条件有为真的情况,则:“嫁吧,比上不足,比下有余。”
如果三个条件都不满足,则:“不嫁!”
*/
import java.util.*;
class Text17{
public static void main(String[] args){
boolean a=false;
boolean b=false;
boolean c=false;
System.out.println("输入:高:");
a= ((new Scanner(System.in).nextDouble())>=180);
System.out.println("输入:富:");
b=((new Scanner(System.in).nextDouble())>=10000);
System.out.println("输入:帅: Y/N");
c=new String ((new Scanner(System.in).next())).equals("Y");
if(a&&b&&c){
System.out.println("我一定要嫁给他!!!");
}else if(a|b|c){
System.out.println("嫁吧,比上不足,比下有余。");
}else{
System.out.println("不嫁!");
}
}
}
import java.util.Scanner;
class TestExe{
public static void main(String[] args){
System.out.println("请输入身高(cm):");
Scanner scanner = new Scanner(System.in);
int hight = scanner.nextInt();
System.out.println("财富(千万):");
double fortune = scanner.nextDouble();
System.out.println("帅否:(是/否)");//("帅否:(true/false)");
boolean smart = scanner.nextBoolean();
//String str = scanner.next();
if (hight >= 180 && fortune >= 1 && smart == true/*str.equals("是")*/){
System.out.println("我一定要嫁给他!!!");
}else if (hight >= 180 || fortune >= 1 || smart == true/*str.equals("是")*/){
System.out.println("嫁吧,比上不足,比下有余.");
}else
System.out.println("不嫁!");
}
}
5.switch语句
/*
1.根据变量值,选择相应的case 语句执行,一旦进入case语句在没有出现break和
case语句,在没有出现break,case语句的情况下,会继续执行case语句,而不跳转当签名结构
2在switch-case结构中,可以使用break比碍事当程序执行到此程序的时候,跳出当前循环
3.default的位置比较灵活,建议加上break;
4.switch 的类型是int byte short String
2.若多个case语句的执行语句相同,可以合并
3.switch case()满足变量类型,数据不多
*/
import java.util.*;
public class code4{
public static void main(String[]args){
Scanner s=new Scanner (System.in);
while(true) {
System.out.println("输入1--3题目-1break");
int a=s.nextInt();
if(a==-1)break;
switch(a){
case 1:
fun1();
break;
case 2:
fun2();
break;
case 3:
fun3();
break;
default:
System.out.println("输入错误!!");
break;
}
}
}
public static void fun1(){
Scanner s=new Scanner (System.in);
System.out.println("输入1 2 3 -1结束");
int i=s.nextInt();
while(i!=-1){
switch(i){
default:
System.out.println("other");
break;
case 0:
System.out.println("zero");
break;
case 1:
System.out.println("one");
break;
case 2:
System.out.println("two");
break;
case 3:
System.out.println("three");
break;
}
i=s.nextInt();
}
System.out.println("请输入:spring /summer /winter");
String season =s.next();
switch(season){
case "spring":
System.out.println("春天");break;
case "summer":
System.out.println("夏天");break;
case "winter":
System.out.println("冬天");break;
default:
System.out.println("other");break;
}
}
public static void fun2(){
Scanner s=new Scanner(System.in);
System.out.println("输入学生成绩:");
int score=s.nextInt();
switch(score/10){
case 10:
case 9:
case 8:
case 7:
System.out.println("良好");break;
case 6:
case 5:
case 4:
System.out.println("不好");break;
default:
System.out.println("why");
}
switch(score/60){
case 1:
System.out.println("合格");break;
case 0:
System.out.println("不合格");break;
default:
System.out.println("输入出错!");
}
}
public static void fun3(){
Scanner s=new Scanner (System.in);
System.out.println("2014\n请输入Month");
int month=s.nextInt();
System.out.println("请输入Day");
int day=s.nextInt();
int sum=0;
switch(month){
case 12:
sum+=30;
case 11:
sum+=31;
case 10:
sum+=30;
case 9:
sum+=31;
case 8:
sum+=31;
case 7:
sum+=30;
case 6:
sum+=31;
case 5:
sum+=30;
case 4:
sum+=31;
case 3:
sum+=28;
case 2:
sum+=31;
case 1:
sum+=day;break;
default:
System.out.println("出错");
}
System.out.println("2014年"+month+ "月" + day + "日" +"是这年的:" + sum +"天!");
}
}
/*
从键盘分别输入年、月、日,判断这一天是当年的第几天
注:判断一年是否是闰年的标准:
1)可以被4整除,但不可被100整除
2)可以被400整除
*/
import java.util.*;
public class code7{
public static void main(String[]args){
System.out.println("从键盘上输入“年” “month”和“day”");
Scanner s=new Scanner(System.in);
int Year=s.nextInt();
int Month=s.nextInt();
int Day=s.nextInt();
int [] a={31,28,30,31,30,31,30,31,30,31,30,31};
int day=0;
if((Year%4==0&&Year%100!=0) || Year%400==0){
a[1]=29;
System.out.println("闰年:");
}
else{
System.out.println(" 不是闰年。。");
}
if(Day>a[Month-1]){
System.out.println("没有这个日期 :出错");
System.exit(1);
}
for(int i=0;i<Month-1;i++){
day+=a[i];
}
day+=Day;
System.out.println("这是2013年的"+day+"天");
}
}
If else 与switch
import java.util.*;
public class code5{
public static void main(String[]args){
fun1();
fun2();
}
public static void fun2(){
Scanner s=new Scanner (System.in);
System.out.println("请输入学生成绩:");
int score = s.nextInt();
char level=' ';
switch(score / 10){
case 10:
case 9:
level = 'A';
break;
case 8:
case 7:
level = 'B';
break;
case 6:
level = 'C';
break;
default:
level = 'D';
break;
}
System.out.println("学生成绩:"+score+
",等级为" + level);
}
public static void fun1(){
Scanner s=new Scanner (System.in);
System.out.println("请输入学生成绩:");
int score = s.nextInt();
char level=' ';
if(score>=90&&score<=100){
level='A';
}else if(score>=70 && score<=80){
level='B';
}else if(score>=70 && score<=80){
level='C';
}else{
level='D';
}
System.out.println("学生成绩:"+score+
",等级为" + level);
}
}
循环结构
循环语句功能 在某些条件满足的情况下,反复执行特定代码的功能 循环语句的四个组成部分 初始化部分(init_statement) 循环条件部分(test_exp) 循环体部分(body_statement) 迭代部分(alter_statement) 循环语句分类 for 循环 while 循环 do/while 循环
For 循环实例:
public class code6{
public static void main(String []args){
int i=0;
for(System.out.println("Hello");i<7;System.out.println("word"),i++){
System.out.println("b");
}
//i=9,i=8;
int count=0;
for( i=1;i<100 ;i++ ){
if(i%2== 0){
System.out.print("\t"+i);
count++;
}
if(i%10==0)System.out.println();
}
System.out.println("个\n数为"+count);
}
}
例子2
/*
编写程序FooBizBaz.java,
从1循环到150并在每行打印一个值,
另外在每个3的倍数行上打印出“foo”,
在每个5的倍数行上打印“biz”,
在每个7的倍数行上打印输出“baz”。
*/
public class Text7{
public static void main(String[]args){
for(int i=1;i<=150;i++){
System.out.print(i+" ");
if(i%3==0){
System.out.print("foo ");
}
if(i%5==0){
System.out.print("biz ");
}
if(i%7==0){
System.out.print("baz ");
}
System.out.println();
}
}
}
/*
1.打印1~100之间所有奇数的和
2.打印1~100之间所有是7的倍数的整数的个数及
总和(体会设置计数器的思想)
3.输出所有的水仙花数,所谓水仙花数是指一个3
位数,其各个位上数字立方和等于其本身。
例如: 153 = 1*1*1 + 3*3*3 + 5*5*5
*/
public class Text8{
public static void main(String[]args){
fun1();
fun2();
fun3();
}
public static void fun1(){
int sum=0;
for(int i=0;i<100;i++){
if(i%2==1){
sum+=i;
}
}
System.out.println("1~100之间所有奇数的和"+sum);
}
public static void fun2(){
int i=0;
int sum=0;
for(i=0;i<100;i++){
if(i%2==1){
sum+=i;
}
}
System.out.println("1~100之间所有是7的倍数的整数的个数"+i+"总和"+sum);
}
public static void fun3(){
int sum=0;
int code=0;
for(int i=0 ;i<=9 ;i++ ){
for(int j=0 ;j<=9 ;j++ ){
for(int k=0 ;k<=9 ;k++ ){
code=i*i*i+j*j*j+k*k*k;
if(code/100>0){
int a=code/100;
int b=(code%100)/10;
int c=(code%10);
if(a==i&&b==j&&c==k){
System.out.print("\t"+code);
sum+=code;
}
}
}
}
}
System.out.println("\n\t求和结果:"+sum);
}
}
while 循环语句 do-while 循环语句
public class code8{
public static void main(String[]args){
int i=1;
int count=0;
int sum=0;
while(i<=100){
if(i%2==0){
System.out.println(i);
count++;
sum+=i;
}
i++;
}
System.out.println(i);
System.out.println("个数为"+count);
System.out.println("和为"+sum);
int j=1;
do{
if (j%2==0){
System.out.println("*****"+j);
}
j++;
}while(j<=100);
System.out.println(i);
System.out.println("个数为"+count);
System.out.println("和为"+sum);
int m=10;
do{
System.out.println(m);
}while(m<5);
}
}
1) 九九乘法表 2)1—100之间的所有质
public class code9{
public static void main(String[]args){
for(int i=1;i<=9;i++){
for(int j=1 ;j<=9 ;j++ ){
System.out.print(i+"*"+j+"="+i*j+"\t");
}
System.out.println();
}
int i=0,j=0,k=1;
for( i=3 ;i<100 ;i++ ){
for(j=2 ;j<i ;j++ ){
if(i%j==0)break;
}
if(j==i){
System.out.print("\t"+i);
k++;
}
if(k%5==0){
System.out.println();
k=1;
}
}
}
}
public class code11{
public static void main(String[]args){
for( int i=0;i<9/2 ;i++ ){
for(int k=0 ;k<9/2-(i+1) ;k++ )//空格
System.out.print(" ");
for(int j=0;j<=i*2;j++)
System.out.print("*");
System.out.println();
}
for( int i=0;i<=9/2 ;i++ ){
for(int k=0 ;k<i+1 ;k++ )//空格
System.out.print(" ");
for(int j=0;j<=(9/2)-2*i;j++)
System.out.print("*");
System.out.println();
}
}
}
public class code9{
public static void main(String[]args){
for(int i=1;i<=9;i++){
for(int j=1 ;j<=9 ;j++ ){
System.out.print(i+"*"+j+"="+i*j+"\t");
}
System.out.println();
}
int i=0,j=0,k=3;
System.out.println("\t"+1+"\t"+2+"\t");
long start =System.currentTimeMillis();
boolean al=false;
for( i=3 ;i<1000000 ;i++ ){
for(j=2 ;j<Math.sqrt(i) ;j++ ){
if(i%j==0){
al=true;
break;
}
}
if(!al){
System.out.print("\t"+i);
}
al=false;
}
long end=System.currentTimeMillis();
System.out.println("\n"+(end-start));//5288
}
}