java基础学习

今天学习了更多的Java知识,明白了Java之间的逻辑关系。
逻辑运算符 && || !
注意:逻辑计算支持短路操作
表达多个条件之间的关系。例如年龄大于等于 18 并且年龄小于 65
&&: 与运算,含义是两个条件必须同时成立,可以翻译为并且
1 加仑 ( ) = 3.785 412
Scanner sc = new Scanner ( System . in );
System . out . print ( " 请输入升数 :" );
double d = sc . nextDouble ();
double g = d / 3.785412 ;
g = g * 10000 + 0.5 ;
g = ( int ) g / 10000. ; 如果写成 ( int ) g / 10000 结果一定是没有小数 , 因为参与运算的双方是整数,所以除法是
整除运算
System . out . println ( d + " 升等于 " + g + " 加仑 " );
C = 5×(F- 32)/9
Scanner sc = new Scanner(System.in);
System.out.println(" 请输入华氏温度值 :");
double f = sc.nextDouble();
// C = 5×(F- 32)/9
double cc = 5 * (f - 32) / 9;
// 额外要求:只输出整数
System.out.println(" 华氏 " + (int) f + " 等于摄氏 " + (int) cc);
1 英亩 =4046.864798 平方米
1 、将英亩转换为平方米
2 、平方米 /1.2 获取小时数
3 、将小数部分的小时值转换为分钟和秒
int num = 5;
double pfm = num * 4046.864798;
double h = pfm / 1.2;
int hour = (int) h;
double n2 = (h - hour) * 60;
int min = (int) n2;
n2 = (n2 - min) * 60;
int sec = (int) n2;
sec = sec + 1;
System.out.println(" 吃完 " + num + " 英亩草地需要的时间为 " + hour + " 小时 " + min + "
" + sec + " "); 年龄大于等于 18 并且年龄小于 65
age>=18 && age<65
算法规则:同真则真,其余为假
|| :或运算,含义是两个条件中成立一个即可,可以翻译为或者
年龄小于 18 岁或者年龄不小于 65
age<18 || age>=65
算法规则:同假则假,否则为真
! :非运算,含义是不是,用于对某个条件进行否定
年龄不小于 18
写法 1 age >=18
写法 2 ! age<18
算法规则:非真则假,非假则真
短路运算 [ 考试 , 难度 2 ]
例如 A && B: 如果条件 A false, 则不会执行 B ,因为根据运算规则结果一定是 false ,和 B 的值没有关系
A||B :如果条件 A true ,则不会执行 B ,因为格局运算规则结果一定是 true ,和 B 的值没有关系
考核中主要配置 ++/-- 进行测试
int age = 100 ;
char cc = 'A' ;
if ( cc >= 'B' || age ++< 200 ){
System . out . println ( "ZZZZZ" );
}
System . out . println ( age ); //? 输出 101
int age = 100 ;
char cc = 'A' ;
if ( cc >= 'B' && age ++< 200 ){
System . out . println ( "ZZZZZ" );
}
System . out . println ( age ); //? 输出 100, 因为短路的原因,导致 age++ 并没有得到执行
int age = 200 ;
char cc = 'A' ;
if ( cc >= 'B' || age ++<= 200 ){
System . out . println ( "ZZZZZ" );
System . out . println ( age ); //? 输出 201
}
赋值运算符 = += -= *= /= %=
int k=100; 含义是将 100 赋值存储在 k 对应的存储单元中
k=k+3 可以简写为 k+=3 -= */ /= 类似
考点【难度系数 3
结构化编程
结构化程式设计 ( 英语 :Structured programming) 1960 年代开始发展起来的一种编程典范。它采用子
程序、程式码区块、 for 循环以及 while 循环等结构来取代传统的 goto
指导思想
自顶向下、逐步求精、模块化
编程过程
流程图是流经一个系统的信息流、观点流或部件流的图形代表。在企业中,流程图主要用来说明某一过
程。这种过程既可以是生产线上的工艺流程,也可以是完成一项任务必需的管理过程。
常见的绘制工具有 Visio PowerDesigner 等。
1 、圆角矩形表示 开始 结束
2 、矩形表示行动方案、普通工作环节用
3 、菱形表示问题判断或判定(审核 / 审批 / 评审)环节
4 、用平行四边形表示输入输出
5 、箭头代表工作流方向
short k = 3 ;
k = k + 3 ; // 出现了一个语法错误,因为 k+3 这里的 3 系统识别为 int 类型,所以计算时所有数据自动转换为
int 类型,必然计算结果也是 int 类型,将 int 类型的数据赋值给 short 类型变量 ---- 错误
System . out . println ( k );
short k = 3 ;
k += 3 ; // 没有语法错误,因为 += 这种符号中包含了自动类型转换 推荐工具: ProcessOn  支持流程图、思维导图、原型图、 UML 、网络拓扑图、组织结构图等
结构化编程的推论
任何复杂的问题都可以三种基本算法结构来描述:顺序、选择、循环。因此用计算机语句描述的程序也
包含三种基本结构
条件分支语句
Java 语言提供了两种判断语句: if 语句和 switch 语句。这两种语句用于实现判断,当符合某些条件时执行
某段代码,否则将不执行
语法
if( 条件判断语句 ){ 代码 A;} 当条件成立时执行代码 A ,如果条件不成立则不执行代码 A ,而是直接
执行 if 的下一句
if( 条件 ){ 代码块 1;}else{ 代码块 2;} 当条件成立时执行代码块 1 ,如果条件不成立则执行代码块 2 。没
有一种情况是同时执行代码块 1 2
if( 条件 1){ 代码块 1;}else if( 条件 2){ 代码块 2;}...else{ 代码块 n;} 当条件 1 成立时执行代码块 1 ,如果条
1 不成立继续判断条件 2 ,如果条件 2 成立则执行代码块 2, 依次类推。没有一种情况是同时执行代
码块 1 2
说明:允许多个 if之间进行相互嵌套
要求输入学生成绩(假设成绩都是整数),如果 >=85 显示优秀,如果 >=70 显示良好,如果 >=60 显示及
格,否则显示不及格
修改代码
开关分支语言 switch
语法:
switch( 表达式 ){
case 1 判断表达式的值是否在值 1 ,如果相等则执行代码块 1
代码块 1 break; 执行完成后,如果没有 break ,则自动执行后续语句,但是不进行判
定。如果有 break 则立即中断 switch 的执行,跳到 switch 块的下一局继续执行
多个 case 语句 :
... ...
default: 如果所有的 case 都不能成立,则执行代码块 n
代码块 n; break;
}
Scanner sc = new Scanner ( System . in );
int score = sc . nextInt ();
if ( score >= 60 ) {
System . out . println ( " 成绩及格 " );
} else {
System . out . println ( " 成绩不及格 " );
}
Scanner sc = new Scanner ( System . in );
int score = sc . nextInt ();
if ( score >= 85 ) { // 这里的顺序不能调整,因为条件成立后则立即执行代码块,执行结束则自动跳出
if ,不会继续判断
System . out . println ( " 成绩优秀 " );
} else if ( score >= 70 ) {
System . out . println ( " 成绩良好 " );
} else if ( score >= 60 ){
System . out . println ( " 成绩及格 " );
} else {
System . out . println ( " 成绩不及格 " );
}
if ( score > 70 ) {
System . out . println ( " 良好 " );
} else if ( score > 85 ) { // 这里的代码永远不会有执行机会。因为这里的 if 条件实际上是一个复合
条件, if(score<=70 && score>85){}
System . out . println ( " 优秀 " );
} else if ( score > 60 ) { //score<=70 && score<=85 && score>60
System . out . println ( " 及格 " );
} else {
System . out . println ( " 不及格 " );
}
语法点:
表达式的计算结果可以是整型【不允许 long 类型】 , 可以是 char ,同时允许是字串类型 [String]
也可以是枚举类型
case 值类型必须和 switch 条件类型相同或者能隐式转换为 switch 表达式类型
case 值必须唯一,不能与其它的重复
default 的位置没有特殊要求,但是一定是所有的 case 值不相等时才会执行。但是为了增强可读
性,所以一般建议写在所有的 case 之后
需求:输入月份,显示对应的本月的天数
三目运算符
三目条件运算符(?:)规则是完全一致的,使用的形式是: x ? y z;
需求:要求输入两个整数,输出最大的整数
使用 if 判断的实现方式:
System . out . println ( " 请输入月份 :" );
Scanner sc = new Scanner ( System . in );
int m = sc . nextInt ();
switch ( m ) {
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10 :
case 12 :
System . out . println ( " 本月 31 " );
break ;
case 2 :
System . out . println ( " 请输入年份 :" );
int year = sc . nextInt ();
if (( year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0 ) {
System . out . println ( " 本月 29 " );
} else
System . out . println ( " 本月 28 " );
break ;
case 4 :
case 6 :
case 9 :
case 11 :
System . out . println ( " 本月 30 " );
break ;
default : //default 写在 switch 内部的任何位置上实际都不会影响执行逻辑,但是不建议,
因为会影响可读性
System . out . println ( " 月份错误 !" );
break ;
}
}
}
public class Test8 {
public static void main ( String [] args ) {
Scanner sc = new Scanner ( System . in ); 使用三目运算符实现
要求表达式 1 必须返回值为 boolean 类型
要求表达式 2 和表达式 3 的返回值类型一致
Object max = num1 > num2 ? num1 : "num2" ;
题目
循环结构
循环就是重复做某一件事情。在 Java 程序中,循环控制即在某一情况下,控制程序重复执行某一条或多
条语句,直到遇到终止条件为止
循环语句也称迭代语句,在 Java 语言中存在的 while for do-while 循环语句
需求:计算 1+2+3+...+100=5050
while 循环
while Java 中最基本的循环语句,满足条件才执行循环体,如果不满足条件则不执行。所以有可能循环
体一次都不执行。
语法:
System . out . println ( " 请输入第一个整数 :" );
int num1 = sc . nextInt ();
System . out . println ( " 请输入第二个整数 :" );
int num2 = sc . nextInt ();
int max = num1 ;
if ( max < num2 )
max = num2 ;
System . out . println ( " 两个整数 (" + num1 + "," + num2 + ") 中最大的值为 :" + max );
sc . close ();
}
}
Scanner sc = new Scanner ( System . in );
System . out . println ( " 请输入第一个整数 :" );
int num1 = sc . nextInt ();
System . out . println ( " 请输入第二个整数 :" );
int num2 = sc . nextInt ();
/*
* if(num1>num2) max=num1;
* else max=num2;
*/
int max = num1 > num2 ? num1 : num2 ;
System . out . println ( " 两个整数 (" + num1 + "," + num2 + ") 中最大的值为 :" + max );
sc . close ();
do/while 循环
语法:
do{ 循环体 ; }while( 条件 ) ; 先执行循环体,然后进行条件判断,如果条件为 true ,则执行下次循环;如果
条件为 false 则终止循环。
不同于 while 循环的点: do/while 循环至少执行循环体一次,而 while 循环有可能一次都不执行 .
for 循环
语法: for( 表达式 1 ;表达式 2 ;表达式 3){ 循环体 ;}
执行表达式 1
执行表达式 2 ,一般表达式 2 是一个条件,如果条件为 true 则执行循环体;如果条件为 false 则终止循
执行循环体
执行表达式 3
执行第 2 步骤
for 循环一般用于可以明确循环次数的场景中; while 循环一般用于不能预先确定循环执行次数的场景
中; do/while 循环一般用于不能预先确定循环执行次数,同时要求循环体至少执行一次的场景中
int res = 0 ;
int k = 0 ;
while ( true ){
if ( ++ k > 100 ){
break ; // 跳出循环体,执行循环体后的语句
}
if ( k % 2 == 0 ){ // 如果是偶数不进行累加操作,而是从新开始后续的循环, continue 之后的语句不执
行,从头开始下次循环
continue ; // 终止本次循环,立即进入下次循环
} else {
res += k ; //res=res+k
}
System . out . print ( k + "+" );
}
System . out . println ( "=" + res );
int res = 0 ;
int k = 1 ;
do {
res += k ++ ; //res=res+k;k++;
} while ( k < 101 );
System . out . println ( res ); 省略表达式的写法
练习题:
1 、计算输入数据的阶乘值
2 、互换两个数的值(不允许使用中间变量)
建立临时变量
加减运算交换
位运算方法
3 、输出三个数中的最大值和最小值
4 、输出 1-100 的奇数 ( 每行输出 6 )
5 1-100 求和 (for while 以及 do/while 的写法 )
6 1-100 奇数求和
7 1~100 可以被 3 整除的数
8 、求 100 以内所有能被 3 整除但不能被 5 整除的个数
int res = 0 ;
for ( int i = 1 ; i <= 100 ; i ++ ){
res += i ;
}
System . out . println ( res );
int k = 1 ;
for (; k < 101 ; k ++ ) res += k ;
int k = 1 ;
for (; k < 101 ;) res += k ++ ;
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值