Java初级·基础语法

基础语法*

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-=3
3=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+3
2-4%6+3
3-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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值