1.2 J2SE复习之Java语言基础
目录
算术运算符
+=符号
short s=10;
s=s+3;//改变了数据类型,int型赋值给short类型,可能损失精度
s=(short)(s+1);//不推荐
s += 1;//不改变数据类型,仍然为short
=与==符号
- =支持连续赋值,==为"等于"
- if(b=true);//赋值语句,等价于if(true)
*=符号
int i=1;
i *= 0.1;//编译通过,结果为0
逻辑运算符
逻辑运算符对象为布尔类型变量
^异或
“&”和“&&”
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算(节省运算量)
位运算符
- 位运算符,运算对象为数值,提高效率
- <<左移1等价于*2,2*8,等价于2<<<3,但移动过多,会影响符号位
有无符号右移,区别在于补位的数字(全部的空位)是1还是0
交换数值的方法
1)提供临时变量,略
2)
int m = m+n;
int n = m-n;
int m = m-n;//这种方法容易超出int范围
3)最佳方法(绝妙)
int m = m^n;
int n = m^n;//(m^n)^n==m
int m = m^n;//(m^n)^m==n
三元运算符
- (条件表达式)? 表达式1:表达式2;
- true,运算后的结果是表达式1;
- false,运算后的结果是表达式2;
1)运算符一定要有运算结果,结果的数据类型同表达式1和2的数据类型一致。
表达式1和表达式2为同种类型
2)可用if-else替代,都能实现时,优先三元运算符
例:String str = (i>j)?"i大":(i==j)?"相等":"j大";
判断三数中最大数(三元运算符实例)
int max1 = (m>n)?m:n;
int max2 = (max1>k)?max1:k;
进制转换练习(与运算符的妙用)
题目:将60转化为16进制,并表示出来
PS:JDK封装了相关类方法
String binary = Integer.toBinaryString(i);//二进制表示
String hex = Integer.toHexString(i);//十六进制表示
思路:与运算提取高位,低位(多位可通过循环实现)
int j = i&15;//提取低4位,00001111,&为位运算
char c = 'a';
char c1 = (char)(c+2);
String k1 = (j<=9)?j+"":(char)(j-10+'a')+"";//注意int强制转换为char
i = i>>4;
int z = i&15;
//同上,更多位循环之,如int为32位,8次
sop(k2+k1);
程序基本结构
顺序结构
程序从上到下逐行地执行,中间没有任何判断和跳转。
分支结构
根据条件,选择性地执行某段代码。
有if…else和switch两种分支语句。
循环结构
根据循环条件,重复性的执行某段代码。
有while、do…while、for三种循环语句。
注:JDK1.5提供了for-each循环,方便的遍历集合、数组元素
if语句
if语句三种格式:
1. if(true){
执行代码块;
}
2. if(条件表达式){
执行代码块;
}
else{
执行代码块;
}
3. if(条件表达式){
执行代码块;
}
else if (条件表达式){
执行代码块;
}
……
else{
执行代码块;
}
if...else语句有且只执行一条路径(分段函数的既视感)
if-else语句的嵌套
if(){
}else{
if(){
}
}
- 当多个条件互斥时,条件语句的上下位置可调换,反之,不成立
- 当多个条件语句存在包含关系时,范围小的写在范围大的上面
- 执行语句块只有一条时,{}可省略
if(a>1){
if(b>1)
c=1;//只包含一行语句块
d=1;//d=1赋值运算,不管b>1与否,都执行
}
等价于
if(a>1){
if(b>1){
c=1;}
d=1;
}
获取键盘输入
- 导包
- 新建对象
- 调用对象方法
import java.util.Scanner;
Scanner s = new Scanner(System.in);//接受键盘内容
sop("请输入");
String str = s.next();//获取字符串
int num = s.nextIn();
if语句练习(待补)
switch语句
switch(表达式)中表达式的返回值必须是下述几种类型一:byte,short,char,int,枚举,String(JDK1.7引入) 不可放double,float,Boolean
switch(变量){
case 常量1:
语句1;
break;
case 常量2:
语句2;
break;
… …
case 常量N:
语句N;
break;
default:
语句;
break;
}
- case子句中的值必须是常量,不能是范围,且所有case子句中的值应是不同的;
- default子句是可任选的,(可以没有,可不在末尾,当即使在句首,仍先判断case语句),当没有匹配的case时,执行default
- break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾
int i=5;
switch(i){
default:
sop("default")
case 1:
sop("1");
case 2:
sop("2");//输出default 1 2
break;
case 3:
sop("3");
}
int i=2;
switch(i){
default:
sop("default")
case 1:
sop("1");
case 2:
sop("2");//输出2 3 default[和default程序位置无关]
case 3:
sop("3");
}
当多个case语句块一致时,可统一书写
除此之外,下例也体现了switch和if的转换(/10)
if与switch语句辨析
if和switch语句很像,具体什么场景下,应用哪个语句呢?
1)如果判断的具体数值不多,而且符合byte、 short 、int、 char这四种类型。虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。
2)其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。
日期转换练习(switch语句)
编写程序:从键盘上输入2014年的“month”和“day”,要求通过程序输出输入的日期为2014年的第几天。
思路:利用break实现累加效果
日期转换练习扩展(switch+if语句)
从键盘分别输入年、月、日,判断这一天是当年的第几天
注:判断一年是否是闰年的标准:
1)可以被4整除,但不可被100整除
2)可以被400整除
- 相对于上题,修改之处在于2月
- 用if判断是否闰年,决定不同天数
沧海遗珠
JVM负责垃圾回收,内存管理
G
M
T
Detect languageAfrikaansAlbanianAmharicArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CorsicanCroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchFrisianGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHawaiianHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanKurdishKyrgyzLaoLatinLatvianLithuanianLuxembourgishMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPashtoPersianPolishPortuguesePunjabiRomanianRussianSamoanScots GaelicSerbianSesothoShonaSindhiSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshXhosaYiddishYorubaZulu |
|
AfrikaansAlbanianAmharicArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CorsicanCroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchFrisianGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHawaiianHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanKurdishKyrgyzLaoLatinLatvianLithuanianLuxembourgishMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPashtoPersianPolishPortuguesePunjabiRomanianRussianSamoanScots GaelicSerbianSesothoShonaSindhiSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshXhosaYiddishYorubaZulu |
|
|
|
|
|
Text-to-speech function is limited to 200 characters
|
Options : History : Feedback : Donate | Close |