基础语法*
01.关键字
关键字: Java预定义的有特殊含义的单词
特点
1.常用的开发工具高级记事本/IDE,能够变颜色的一些单词
2.都是小写字母组成
3.都是由特殊含义的单词
public : 公共的
class: 类
static: 静态的
void: 无返回值
4.Java一共提供了50个关键字
其中,"const"和"goto"这两个关键字在Java语言中并没有 具体含义
goto这个关键字可以实现代码的跳转,导致程序的可读性下 降,所以JDK将该关键字的含义屏蔽
但是没有删除它,可能未来JDK升级之后重新使用,保留使用5.关键字不能够作为标识符 后面讲解标识符讲解):
02.标识符
介绍:Java对包、类、方法、参数和变量等要素命名时使用的字符序列称为标识符。
规则
1.由字母,数字,下划线_,美元符号$组成
2.不能以数字开头
3.Java对于大小写严格区分
4.不能是Java中的关键字
规范:
1.见名知意
2.不允许使用中文和拼音
3.满足驼峰命名法(待会讲)
4.命名的长度最好不要超过31个字符
提供一套开发中标准规范:
包,类,抽象类,接口,接口的实现类,变量,方法,常量
包(文件夹)
1.一般都是公司的域名反写
2.所有单词使用.隔开
3.每个单词都是小写组成
eg: www.sxt.com com.sxt www.baidu.com com.baidu.test
类(满足抬头骆驼) class
1.所有单词的首字母大写,其他字母小写
eg: HelloWorld IdentifiedDemo
接口: (满足抬头骆驼) interface
1.所有单词的首字母大写,其他字母小写
2.一般会在第一个单词的前面加上一个大写的I
eg: IStudent ITeacher
接口的实现类 (满足抬头骆驼)
1.所有单词的首字母大写,其他字母小写
2.一般都会在最后一个单词后面加上 Impl implements
eg: StudentImpl
抽象类(满足抬头骆驼)
1.所有单词的首字母大写,其他字母小写
2.在单词的开头一般都会加上 Abs abstract
AbsStudent
枚举和注解: 和类一模一样
变量 (满足低头骆驼
1.第一个单词首字母小写,其他单词首字母大写
2.一般都是名词
eg: studentName studentScore score totalScore
方法(满足低头骆驼)
1.第一个单词首字母小写,其他单词首字母大写
2.一般都是动词
eg: getTotalScore getAverageScore getMaxValue getMinValue main
常量:
1.所有单词都是大写
2.每一个单词都使用_隔开
eg: MAX_VALUE MIN_VALUE PI JAVA_HOME
面试题: 说一说你Java的命名规范
`public class IdentifiedDemo {
public static void main(String[] args){
public class IdentifiedDemo {
public static void main(String[] args){
// int 123abc_$;
// int static;
// int void;
// system.out.println();
int abc123_$;
String sn;
String 你好;
String xXMC;
}
public static void reqDataByHttpByJson(){}
}
03.常量
为什么需要有常量?
PI 一周有7天
常量: 在程序的执行过程中,其值不会发生改变的量
常量的分类:
字面值常量
整型常量 进制转换(课后自学)
二进制 由0,1组成,由0b开头 0101010101 也可以使用下划线分割数字
八进制 由0~7组成,由0开头
十进制 由0~9组成,默认就是十进制
十六进制 由0~9,A,B,C,D,E,F 组成,由0x开头
小数常量
0.2F float类型的小数常量
0.2D double类型的小数常量
后面讲解数据类型的时候介绍float和double
布尔常量
只能取两个值
true false
字符常量
今晚打老虎 -> 20 61 31 45 71 -> 10101010 二进制 密码表(编码表 UTF-8 GBK ISO-8859-1 …)
什么是字符?字符的本质是什么?数字 整数 a 97 0 48 A 65 今晚攻打高老庄 27 48 65 32 89 98 36
什么是字节?字节本质是什么? 数字 数据传输的最基本单位
a 1 张 换行 制表符 都是字符 65535
1字符 在 GBK a 97 1个字节
1字符 在 GBK 中 2个字节
1字符 在 UTF-8 中 占3个字节
字符在计算机中存储本质还是数字
1byte = 8bit 0001 0001
1kb = 1024byte
1mb = 1024kb
1gb = 1024mb
1tb = 1024gb
0000 0000
0 0 1
00 00 01 10 11
000
00000000 256
00000000 00000000 65536
2个字节足够表示全世界所有的字符
11 00 10 01
1bit 能够表示多少种状态 2种 0 1
2bit 4 10 01 11 00
3bit 8
8bit 256
16bit 65536
16bit = 2byte
Java使用2个字节表示一个字符
0000 0000 0000 0000 65536
一般2个字节表示一个汉字GBK
GBK UTF-8 Unicode ISO-8859-1 ASCII
普通字符
0 48
A 65
a 97
转义字符
\n 换行
\r
\r\n
\t
注意:
1.字符常量由 ‘’ 包裹
2.里面只能够有一个字符
3.转义字符可以由两个字符组成,第一个是
先记住常见的字符编码:
a 97 b 98
A 65 B
0 48
\t 制表
\n 换行
\r\n 换行
’
"
字符串常量
1.由双引号包裹
2.里面可以有一个字符也可以有多个字符
3.字符串里面可以是空串
null常量
表示的是引用类型的常量,会在后面讲解面向对象的时候详细讲解
二、自定义常量 后面讲解面向对象的时候讲解 (使用 final 关键字修饰的 变量 称为常量)
注意:
1.System.out.println();输出的都是数值的十进制
2.默认整型常量默认是 int 类型
3.默认小数类型就是 double 类型
4.字符的数量不会超过65535
5.windows系统的换行符是 \r\n \n \R
6.计算机最多能表示36进制 (Integer类可以轻易地实现进制转换)
补充知识点:
进制转换的5种情况 3 ——> 9
1.其他进制 -> 十进制
2.十进制 -> 其他进制
3.X进制 -> Y进制
4.十进制和二进制的快速转换 8421BCD码
5.二进制和八进制和十六进制之间的快速转换法 分组法
代码
public class ConstantDemo {
// 自定义常量
public static final int MAX_SCORE = 100;
public static void main(String[] args){
System.out.println(10);
System.out.println(0b1001);
System.out.println(0b1001_1100_0010_1010);
System.out.println(037);
System.out.println(0xFFFF);
System.out.println(2.5);
System.out.println(2.5F);
// System.out.println(true + 1);
System.out.println('a');
System.out.println('0');
System.out.print('A');
System.out.print('\t');
System.out.print('C');
System.out.print('\'');
System.out.print('\\');
System.out.println('\uAA61');// 0000 0000 0000 0000
// System.out.print('');
System.out.println("");
System.out.println("HelloWorld");
System.out.println("\"");
System.out.println("'");
}
}
04.变量
变量: 在程序的执行过程当中,其值可以发生改变的量,类似于数学的未知数X
变量的本质 : 就是一个地址
变量的内存分配
int x = 10;
int x; // 1.声明
x = 10; // 2.赋值
System.out.println(x); // 3.使用
定义变量的三要素:数据类型 变量名 初始化值
1.声明
2.赋值
3.使用
注意点
1.变量一定要先声明再赋值再使用
2.变量不能够重复定义
3.变量不能够连续定义 int a = b = c = 10;
4.建议一行只写一条语句
数据类型: Java是一门强类型语言,针对每一种数据都提供了对应的类型
int x; byte short int long
float f;
JavaScript是一门弱语言类型,只有一种数据类型的声明,就是var
var x;
var f;
数据类型的分类:
数值的表示方式:
65536
0000 0000
最高位是符号位: 1表示负数,0表示整数
其他位是数值位:
八大基本数据类型
整数类型 字节数 取值范围
byte 1 0000 0000 -128~127
short 2 0000 0000 0000 0000 -32768 ~ 32767
int 4 -2^31 ~ 2^31 - 1
long 8 -2^63 ~ 2^63 - 1
小数类型
float 4 -3.403E38 ~ 3.403E38
double 8 -1.798E308~1.798E308
0000 0000 0000 0000 0000 0000 0000 0000
注意:
1.虽然小数表示的范围特别大,但是永远不能够存储所有的小数,因为小数存在无限不循环小数
2.同样是4/8个字节的小数类型取值范围大于整数类型,原因是小数和整数的存储形式不一样
3.在处理金融相关项目的时候,小数的计算要求精度非常高,那么使用float或者double来表示会出现精度问题,
后期考虑使用BigDecimal来处理
布尔类型
boolean 1 0000 0000 false / 0000 0001 true
字符类型
char 2 0 ~ 65535 Java使用Unicode编码的范围
引用数据类型 后面讲解面向对象详细说明
类 (class) String
接口 (interface)
数组 ([])
面试题
1.String是基本数据类型吗?
2.说一说Java的数据类型
3.数组是什么类型?
代码
public class VariableDemo {
public static void main(String[] args){
// 1.变量一定要先声明再赋值再使用
/int x;
x = 10;/
int x = 0;
System.out.println(x);
// 2.变量不能够重复定义
// int x = 10;
x = 10;
System.out.println(x);
// 3.变量不能够连续定义
// int a = b = c = 10;
// int a,b,c = 10;
/*int a;
int b;
int c = 10;*/
int a=10,b=20,c=30;
System.out.println(a);
System.out.println(b);
System.out.println(c);
// 4.建议一行只写一条语句
// int a=10;int b = 20; int c=10;
int m = 100;
int n = 200;
int k = 300;
System.out.println("======================");
// 根据不同的数据类型定义变量测试
byte by = 20;
System.out.println(by);
byte by2 = 127; // 待会学习类型转换详细介绍
System.out.println(by2);
short s = 32767;
System.out.println(s);
// 9223372036854775808
long l = 11111111111111111L;
System.out.println(l);
float f = 2.5f;
System.out.println(f);
double d = 3.5f;
System.out.println(d);
boolean bool = true;
System.out.println(bool);
char ch = '中';
System.out.println(ch);
ch = '\u0002'; // 这是一个空字符
System.out.println(ch);
String str = "good";
System.out.println(str);
}
}
05.数据类型转换
数据类型转换
依据
根据取值范围来定
byte -> short -> int -> long -> float -> double
char ->
注意:
1.boolean类型不能够参与类型转换
2.char和byte/short只有交集关系,没有子集关系
1.自动类型转换
将小类型的数据转换成大类型数据,系统会自动转换
2.强制类型转换
将大类型的数据转换成小类型的数据,会编译报错
解决办法: 强制类型转换
格式:
目标类型 变量名 = (目标类型) 被转换的类型;
强制类型转换会出现的问题:
1.精度的丢失
2.数据的溢出
3.byte/short/char特例
4.byte/short 和 char 参与转换,都需要强制类型转换
5.表达式类型提升
当表达式的运算符两边类型不一致的时候,结果的类型会自动向高类型转换
6.当byte short char 之间参与运算的时候,底层都会转换成int类型来计算
7.boolean类型不能够参与运算和转换
8.字符串在参与运算中的转换问题,字符串相加是拼接操作
9.变量计算和常量计算问题
变量相加,系统无法判断具体的结果
常量相加,在编译时期,系统就会运算结果
代码
public class VariableDemo {
public static void main(String[] args){
// 1.变量一定要先声明再赋值再使用
/int x;
x = 10;/
int x = 0;
System.out.println(x);
// 2.变量不能够重复定义
// int x = 10;
x = 10;
System.out.println(x);
// 3.变量不能够连续定义
// int a = b = c = 10;
// int a,b,c = 10;
/*int a;
int b;
int c = 10;*/
int a=10,b=20,c=30;
System.out.println(a);
System.out.println(b);
System.out.println(c);
// 4.建议一行只写一条语句
// int a=10;int b = 20; int c=10;
int m = 100;
int n = 200;
int k = 300;
System.out.println("======================");
// 根据不同的数据类型定义变量测试
byte by = 20;
System.out.println(by);
byte by2 = 127; // 待会学习类型转换详细介绍
System.out.println(by2);
short s = 32767;
System.out.println(s);
// 9223372036854775808
long l = 11111111111111111L;
System.out.println(l);
float f = 2.5f;
System.out.println(f);
double d = 3.5f;
System.out.println(d);
boolean bool = true;
System.out.println(bool);
char ch = '中';
System.out.println(ch);
ch = '\u0002'; // 这是一个空字符
System.out.println(ch);
String str = "good";
System.out.println(str);
}
}
06.运算符
运算符: 针对常量和变量之间进行运算的符号
eg: a + 1 a + b a / b a > b
01.运算符的分类
算术运算符 赋值运算符 关系运算符 逻辑运算符 位运算符 三目运算符
算数运算符
+ - * / % ++ –
+在Java当中含义很多
1.作为正数 单目运算符 双目运算符 三目运算符 +5 a + b a ? b : c
2.加法运算
3.字符串连接符
技巧:
1.如何计算中防止精度丢失
2.如何分离中一个数的每一位
1234
分离个位: 1234 / 1 % 10
分离十位: 1234 / 10 % 10
分离百位: 1234 / 100 % 10
分离千位: 1234 / 1000 % 10
public class OperatorDemo02 {
public static void main(String[] args){
int a =10;
int b =20;
System.out.println(“a=”+ a +",b="+b);
int c =a++;//a的值先赋给c,c=10,然后a自加1=11
int d =b–;//b的值先赋给d,d=20,然后b自减1=19
System.out.println(“a=”+ a + “,b=”+ b +",c="+c+",d="+d);
// a=11,b=19,c=10,d=20
}
}
02.自增自减运算符
自增自减运算符
++ – 属于单目运算符
++ 表示自增1
– 表示自减1
分为
单独使用
表示自增或者自减,没有任何区别
参与运算
如果++放在操作数的左边,就表示先自增再参与运算
如果++放在操作数的右边,就表示先参与运算,再自增或者自减1
public class OperatorDemo02 {
public static void main(String[] args){
int a =10;
int b =20;
System.out.println(“a=”+ a +",b="+b);
int c =a++;//a的值先赋给c,c=10,然后a自加1=11
int d =b–;//b的值先赋给d,d=20,然后b自减1=19
System.out.println(“a=”+ a + “,b=”+ b +",c="+c+",d="+d);
// a=11,b=19,c=10,d=20
}
}
习题
请计算
a=3,b=4;
(1):(a++)/3+(–b)2-(a–)%6+(b++)3-(b–)
a=3,b=4
a: 4 3
b: 3 4 3
3/3+32-4%6+33-4=8
(2):(++b)2-(a–)%4+(a++)5-(–b)/2+(–a)
a=3,b=4
a: 3 2 3 2
b: 4 5 4
result:52-3%4 +25-4/2+2=17
(3):(a–)6+(b++)/3-(–a)2-(–b)2+(++a)
a:3 2 1 2
b:4 5 4
result:36+4/3-12-42+2=10+1.333
int x = 3;
int res = (x++)%(++x);
请推断res,x此时的值。
练习:
1.int n = 5;n = ++n + ++ n;求n=?
2.int n = 3;n = ++n + n ++;求n=?
public class OperatorDemo03{
public static void main(String[] args){
int a =3;
int b=4;
int result=(a–)*6+(b++)/3-(–a)*2-(–b)*2+(++a);
System.out.println(“a=”+a+ “,b=”+b+ “,result=”+result);
int x = 3;
int res = (x++)%(++x);
/*x=4 5
res=3%5=3
*/
System.out.println(“x=”+x+ “,res=”+res);
int n = 5;
n = (++n)+(++n);
System.out.println("n="+n);
//求n=
//6+7=13
}
}
03.赋值运算符
赋值运算符
= : 这个等于号在Java中表示赋值的意思,真正数学意义上的相等是 ==,
扩展赋值运算符:
+= -= *= /= %=
面试题
short s1 = 1;s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错??
前者编译失败,short和int类型计算结果是int类型,将int类型赋值给short类型,需要强制类型转换
后者编译通过,因为使用扩展赋值运算符系统会自动帮我们强制类型转换
技巧: 如何交换两个数?
int x = 10;
int y = 20;
1.定义中间变量temp
2.使用异或来进行交换两个数的位置 (位运算符学习)
public class OperatorDemo04{
public static void main(String[] args){
//将10复制给i
int i =10;
i+=5; //相当于i=i+5 类推可知-= *= /= %=
System.out.println(i);
int x=10;
int y=20;
int tem=0;
tem=x;
x=y;
y=tem;
System.out.println("x="+x+ ",y="+y);
}
}
04.关系运算符
关系运算符
< >= <= != ==
关系运算符的结果是boolean类型
结果一般是true false
并且 或者
public class OperatorDemo05 {
public static void main(String[] args){
int a =10;
int b =20;
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a>=b);
System.out.println(a<=b);
System.out.println(a!=b);
System.out.println(a==b);
}
}
05.逻辑运算符
逻辑运算符
作用:
连接多个boolean类型的表达式
boolean类型的表达式1 逻辑运算符 boolean类型的表达式2 逻辑运算符 boolean类型的表达式3
分类:
& 按位与
| 按位或
^ 异或
&& 短路与
|| 短路或
! 非
与: 有一个为false结果为false
如果都为true结果才为true
或: 有一个为true结果为true
如果两个都为false结果才为false
面试题
& 和 && 的区别
& 表示按位与,无论什么情况都会同时计算运算符两边的表达式
&& 表示短路与, 如果前面的表达式为false,那么无论后面结果如何,都不会去计算后面表达式的值
&&开发中使用,&基本不用
&常用于位运算,位运算的效率比普通运算要高很多
1001 & 0110 = ?
1 0 0 1
& 0 1 1 0
0 0 0 0
1001 | 0110 = ?
1 0 0 1
| 0 1 1 0
1 1 1 1
^ : 相同为false,不同为true
1001 ^ 0110 = ?
1 0 0 1
^ 0 1 1 0
1 1 1 1
! : 取反
当!的个数是奇数个的时候,结果相反
当!的个数是偶数个的时候,结果不变
public class OperatorDemo06{
public static void main(String[] args){
int a =10;
int b =20;
//串联=================================
System.out.println(a>b & a<b);//false & true= false
System.out.println(a>b & a>b);//false & false= false
System.out.println(a<b & a<b);//true & true= false
System.out.println(a<b & a>b);//true & false= false
//并联=================================
System.out.println(a>b | a<b);//false | true= false
System.out.println(a>b | a>b);//false | false= false
System.out.println(a<b | a<b);//true | true= false
System.out.println(a<b | a>b);//true | false= false
//异性相吸,同性相斥================================
System.out.println(a>b ^ a<b);//false ^ true= true
System.out.println(a>b ^ a>b);//false ^ false= false
System.out.println(a<b ^ a<b);//true ^ true= false
System.out.println(a<b ^ a>b);//true ^ false= true
System.out.println(!(a<b));
System.out.println("=========================");
//&& || 运算更快捷 串联中,只要前面满足,后面部分就不用再算。
System.out.println(a<b || ( 10 / 0)==0);//false
System.out.println(a>b && (10/0)==0); //true
System.out.println("=========================");
System.out.println(9 & 6);//换成二进制计,看上方
06.条件运算符
条件运算符(三目运算符) ?:
格式:
X ? Y : Z
X表达式必须是boolean类型的表达式
执行流程
首先计算X表达式的结果, 如果X的结果为true, 那么整个表达式的结果就是Y的值
如果X的结果为false,那么整个表达式的结果就是Z的值
1.关于三目运算符嵌套的问题,必须使用括号提高可读性。
2.关于三目运算符值的类型问题
public class OperatorDemo07 {
public static void main(String[] args){
// 求两个数的最大值
int x =300;
int y =200;
int max =(x>y) ? x : y ;
System.out.println(“两者中的最大值为:” + max);
// 求三个数的最大值
int a = 10 ;
int b = 20 ;
int c = 30;
max = (a>b) ? ((a>c)?a:c): ((b>c)?b:c);
System.out.println(“三者之中最大者是:”+ max);
// double max=(x>y) ? x: y;
// 需求;数学考试中,小明考试成绩90分以上奖励苹果一个,否则奖励苹果手机一部
double score=95;
String prize = (score>= 90) ? “苹果” : “苹果手机”;
System.out.println(prize);
}
}
07.表达式
符合一定语法规则的运算符和操作数的式子
运算符: 算数运算符,赋值运算符,关系运算符,逻辑运算符,位运算符(了解), 三目运算符
操作数: 变量或者常量
a + b a * 6 4 - 3 int a = 10;
表达式的分类
按照复杂程度来分:
简单表达式: 只有一个运算符的表达式 a + b a * 6 4 - 3
复杂表达式: 两个或者两个以上的运算符组成的表达式 a > b && a < b
如果复杂表达式就必须要知道运算符的优先级
按照运算符两边的操作数来分
单目 双目 三目
+5 3+a x?y:z
按照名称来分
a + b 算数表达式
表达式的值: 整个表达式的结果
int a = 30; int b = 40; a * b
表达式的值的类型:
int a = 30; int b = 40; a * b
学习复杂表达式:
(a - b) * c - 4
i < 30 && i % 10 != 0
运算符的优先级
1.有括号先计算括号里面的
2.单目运算符 > 双目运算符 > 三目运算符
3.算数运算符(* / % > + -) > 关系运算符(> <… > == !=) > 逻辑运算符(&& > ||) > 条件运算符 > 赋值运算符
4.如果运算符的优先级相同,从左至右即可
5.+ - > ++ – !
技巧
如果针对特别复杂的表达式,可以根据运算符的优先级规律,然后使用()改变优先级,提高程序的可读性
本章习题
数据类型,类型转换,运算符
一、 选择题
\1. 下列正确的标识符有 (难度:★)
A)u2 B)$test
C)this_is_ok D)int
答案: A B C
\2. 字符“A”的Unicode字符编码为65.下面哪些代码正确定义了一个代表字符“A”的变量。(难度:★)
A)char ch=65 int 不可直接转char B)char ch=’\65’ 数字不能用转义字符【解释:可以用】
C)char ch=’\u0041’ 要用字符串 “” D)char ch=’A’ ‘A’是常量
E) char ch=”A”
答案:A C D
\3. 下面不是关键字的是(难度:★)
A)goto B)main
C)short D)void
答案:B
\4. 以下哪段程序能正确地编译通过(难度:★★)
A)char = ‘a’; char b=1; char c=08; B)int a=’a’;
C)long a=’\u00FF’; D)char a=’\u0FFA’;
E) char d=”d”
答案: C D B
\5. 下面语句哪个是正确的(难度:★★)
A)char = ‘abc’; B)long 01 = 0xfff;
C)float f = 0.23; D)double d = 0.7E-3;
答案:D
\6. 下列哪个选项是short型数据的取值范围(难度:★★)
A)-128 ~ +127 B)-32768 ~ +32767
C)-2147483648 ~ +2417483647 D)-3.40282347E38 ~ +3.40282347E38
答案: B
\7. 在Java中,int数据类型占多少位(难度:★★)
A)8 B)16
C)32 D)64
答案:C
\8. Java 中,表示换行符的转义字符是(难度:★)
A)’\n’ B)’\f’
C)’n’ D)’\dd’
答案:A
\9. 在Java中,float数据类型占多少位(难度:★★)
A)8 B)16
C)32 D)64
答案:C
二、简答题
1、Java中,基本数据类型有哪些? (难度:★)
答:Byte short int long float double boolean char**
2、请写出java中基本数据类型所对应的字节数?(难度:★★)
答:
byte 1
Short 2
Int 4
Long 8
Float 4
Double 8
Boolean 1
Char 2
3、java的标识符由什么组成?能不能是中文? (难度:★★)
答:字母 数字 下划线_ 美元$
不能
\4. short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
s1+1 为int 类型数据 s1是 short数据类型 大的数据类型赋给小的数据类型是不行的。
4、char型变量中能不能存贮一个中文汉字?为什么?
可以,不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。
1、char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦。
补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。
2、在Java中,char类型可以存储一个中文汉字,因为Java中使用的编码是Unicode(不选择任何特定的编码,直接使用字符在字符集中的编号,这是统一的唯一方法),一个char类型占2个字节(16比特),所以放一个中文是没问题的。
三 简答题(必写)
下列程序能否编译通过,如果不可以说出原因,如果可以说出结果
1.float f = 25;
System.out.println(f);
答:可以
结果: 25****
\2. byte b = 225;
System.out.println(b);
答:不可以
225超过byte数据类型的范围
3.double d = 3.5f;
System.out.println(d);
答:可以
结果 :3.5
4.float f = (float)4.5;
System.out.println(f);
答:不可以 4.5超过float数据类型的范围
5.int i = (int)2.5;
System.out.println(i);
答:可以
结果: 2
6.byte b = (byte)130;
System.out.println(b);
答:可以运行
结果:-126
7.short s =32768;
System.out.println(s);
答:可以运
结果:-32768
8.byte b = 97;
char ch = (char)b;
System.out.println(ch);
答:可以
结果:b
9.char ch = '1';
byte b = (byte) ch;
System.out.println(b);
答:可以
结果: 49
10.int i = 25;
double d = 6.5;
int i = i + d;
System.out.println(i);
答:不可以 i+d 是double,数据类型无法直接赋值给double数据类型
11.byte b = 97;
char ch = b + 1;
System.out.println(ch);
答:不可以 b+1 在运行前属于int数据类型 无法直接赋值给char 数据类型
12.byte b= 63.5 * 2;
System.out.println(b);
答:不可以
**结果: 右边结果其实是等于127.0,属于double类型
13.boolean bool = false;
int i = (int)bool;
System.out.println(i);
答:不可以 Boolean数据类型无法与其他类型数据转换
14.String str = "2" - 1;
System.out.println(str);
答:可以
结果:2-1
\15. System.out.println(22 + 2 + “2” + 2 );
答:可以
结果:2422
16.byte b= 10;
short s= 20;
Int i = b+ s;
System.out.println(i);
答:可以
结果: 30
16.int b1 = 10;
int b2 = 20;
byte b3 = b1 + b2;
System.out.println(b3);
答:不可以
原因:b1+b2在运行前为int 数据类型,不可以直接赋值给bybe数据类型
17.byte b = 65;
short s = 1;
char ch = b + s;
System.out.println(ch);
答:不可以
原因: int类型数据无法赋值给char 数据类型
四、程序题
public class Practice {
public static void main(String[] args){
//四.程序题
//1.某班第一次Java考试平均分81.29,第二次比第一次多2分,计算第二次考试平均分
double ab= 81.29;
double af=ab+2;
System.out.println(af);
//2.交换两个数的位置(int a = 2,b=3 ——> a = 3, b=2) 使用两种方式
int a =10;//method one
int b =20;
int tem =0;
tem=a;
a=b;
b=tem;
System.out.println(“a=”+a+ “,b=”+b);
int a1 =10;//method two
int b1 =20;
a1=a1^b1;
b1=a1^b1;
a1=a1^b1;
System.out.println(“a=”+a+ “,b=”+b);
//3.定义5个数字计算平均值和总和
int data1=2;
int data2=4;
int data3=8;
int data4=16;
int data5=32;
int average=(data1+data2+data3+data4+data5)/5;
int total=data1+data2+data3+data4+data5;
System.out.println(“average=”+average + “,total=”+total);
//4.根据天数(46)计算周数和剩余的天数
int day =46;
int we=7;
int wek= day/we;
int re=day%we;
System.out.println(“wek=”+wek + “,re=”+re);
//5.定义一个四位会员号:计算四位会员号的各位之和(个位,十位,百位,千位上数字求和)
int nm=5684;
int nm1=nm%10;
int nm2=nm/10%10;
int nm3=nm/100%10;
int nm4=nm/1000%10;
int account=nm1+nm2+nm3+nm4;
System.out.println(“account=”+account);
// 6.计算
int x = 2;
int y = 3;
// 请推断res3,res4,x,y此时的值。
int res3 = (x++)*2+(--y)%3+(--x)/4+(++y)*3;
//x 2 3 2
//y 3 2 3
//res3=2*2+2%3+2/4+3*3=15
int res4 = (--x)/3-(y++)*2+(x++)%2-(y--)%3;
//x 2 1 2
//y 3 4 3
//res4=1/3-3*2+1%2-4%3=0-6+1-1=-6
System.out.println("res3="+res3+ ",res4="+res4);
// 请推断res,x此时的值。
int X = 3;
int res = (X++)%(++X);
//x 3 4 5
//res=3%5=3
System.out.println("X="+X+ ",res="+res);//X=5,res=3;
//请推断res1,aa,bb此时的值。
int aa = 2;
int bb = 3;
int res1 = ((aa++)+(++bb))*2+(--aa)%(bb++)-(++aa)*3+(--bb)/(--aa);
//aa 2 3 2 3 2
//bb 3 4 5 4
//res1=(2+4)*2+2%4-3*3+4/2=12+2-9+2=7
System.out.println("res1="+res1+ ",aa="+aa+ ",bb="+bb);
// 7.int x = 4 , y = 2 , z = 3;求表达式y-=z++–x的值是多少?表达式运行之后,x,y,z的值分别是多少?
//x
//y
int x1=4;
int y1=2;
int z1=3;
System.out.println(y1-=z1++–x1);
//y-=(z++)(–x)
//y-=33=9 y=y-9=-7
// 8.请计算:
int e=3;// 2 1 2
int f=4;// 5 4
int ef1=(e++)/3+(–f)2-(e–)%6+(f++)3-(f–);
//ef1=3/3+32-4%6+33-4=1+6-4+9-4=8
System.out.println(ef1);
int ef2=(++f)*2-(e–)%4+(e++)*5-(–f)/2+(–e);
//ef2=10-3+10-2+1=16
System.out.println(ef2);
int ef3=(e–)*6+(f++)/3-(–e)*2-(–f)*2+(++e);
System.out.println(ef3);
//9.请计算
//1 int n = 5;n = ++n + ++ n;求n=?
int n1=5;
int n2=++n1 + ++n1;
//n2=(++n1)+(++n1)=6+7=13
System.out.println(n2);//13
//2.int n = 3;n = ++n + n ++;求n=?
int n3=3;
int n4=++n3+n3++;
//n4=4+4=8
System.out.println(n4);
}
}
补充练习:
\1. 计算1011对应的十进制?
8+2+1=11
\2. 八进制276对应的十六进制是多少?
0276=28^2+78+6=190【此处可以进行过快速转换】
0276可以表示为 010 111 110 三个一排转为四个一排就是16进制
0 1011 1110 11/13 BE
BE
\3. 十进制136对应的二进制
1000 1000
\4. 如何将7进制26的15进制
先换成十进制
26(七进制)=2*7+6=20(十进制)
20(十进制)=15(15进制)
\5. 已知某数的原码为1011 0100,求出该数的补码和反码
补码:11001011
反码:11001101
15.已知某数的补码为11101110,求出该数的原码
他的反码是:1110 1101
原码:10010010