首页 > 编程语言 >02_18_Java语音进阶||day18_Java基础小节练习(17-20部分)数据类型转换&运算符&方法入门、数组、网络通信概述&TCP协议、线程池&lambda表达式

02_18_Java语音进阶||day18_Java基础小节练习(17-20部分)数据类型转换&运算符&方法入门、数组、网络通信概述&TCP协议、线程池&lambda表达式

时间:2023-02-26 19:03:40浏览次数:40  
标签:02 Java 定义 int System 运算符 out public 变量


第一部分 数据类型转换&运算符&方法入门

第一题

  • 编写步骤:
  1. 定义类 Test1
  2. 定义 main方法
  3. 定义两个byte类型变量b1,b2,并分别赋值为10和20.
  4. 定义变量b3,保存b1和b2的和,并输出.
  5. 定义两个short类型变量s1,s2,并分别赋值为1000和2000.
  6. 定义变量s3,保存s1和s2的和,并输出.
  7. 定义一个char类型变量c1赋值为’a’,一个int类型变量i1赋值为30.
  8. 定义变量ch3,保存c1和i1的差,并输出.
  • 参考答案:

java

public class Test1 {

public static void main(String[] args) {

// 定义两个 byte类型变量
byte b1 = 10;
byte b2 = 20;
// 定义int 类型变量 b3
int b3 = b1 + b2;
System.out.println("byte类型b1和b2的和为:");
System.out.println(b3);

// 定义两个 short类型变量
short s1 = 1000;
short s2 = 2000;
// 定义int 类型变量 b3
int s3 = s1 + s2;
System.out.println("short类型s1和s2的和为:");
System.out.println(s3);

// 定义char类型变量
char ch1 = 'a';
// 定义int类型变量
int i1 = 30;
// 定义int 类型变量 ch3
int ch3 = ch1 - i1;
System.out.println("char类型ch1和int类型i1的差为:");
System.out.println(ch3);
}
}

第二题

  • 编写步骤:
  1. 定义类 Test2
  2. 定义 main方法
  3. 定义 int类型变量i1 和 long类型变量l1
  4. 定义变量add,保存i1和l1的和,并输出.
  5. 定义 long类型变量l2 和 float类型变量f2
  6. 定义变量add2,保存l2和f2的和,并输出.
  7. 定义 int类型变量i3 和 double类型变量d3
  8. 定义变量add3,保存i3和d3的和,并输出.
  9. 定义 float类型变量f4 和 double类型变量d4
  10. 定义变量add4,保存f4和d4的和,并输出.
  • 参考答案:
    java
public class Test2 {

public static void main(String[] args) {
// 定义 int类型变量i1 和 long类型变量l1
int i1 = 100;
long l1 = 200;
// 定义变量add,保存i1和l1的和,并输出.
long add = i1 + l1;
System.out.println("add 的值:"+add);
// 定义 long类型变量l2 和 float类型变量f2
long l2 = 1000000;
float f2 = 0.45F;
// 定义变量add2,保存l1和f1的和,并输出.
float add2 = l2 + f2;
System.out.println("add2的值:"+add2);
// 定义 int类型变量i3 和 double类型变量d3
int i3 = 1000000;
double d3 = 0.45;
// 定义变量add3,保存i2和d1的和,并输出.
double add3 = i3 + d3;
System.out.println("add3的值:"+add3);
//定义 float类型变量f2 和 double类型变量d2
float f4 = 1000000.789F;
double d4 = 0.45;
//定义变量add4,保存f2和d2的和,并输出.
double add4 = f4 + d4;
System.out.println("add4的值:"+add4);
}
}

第三题

  • 编写步骤:
  1. 定义类 Test3
  2. 定义 main方法
  3. 定义char类型变量ch,赋值为’J’
  4. 使用强制转换的方式,将变量ch转换为小写’j’,并输出
  5. 定义char类型变量ch2,赋值为’a’
  6. 使用+=的方式,将变量ch2转换为大写’A’,并输出
  7. 定义double类型变量d3,int类型变量i3
  8. 定义double变量sum3,保存d3与i3的和,输出sum3的值和sum3去除小数部分的值
  9. 定义double类型变量d4,int类型变量i4
  10. 定义int变量mul4,保存d4和i4乘积的整数部分,并输出
  • 参考答案:

java

public class Test3 {
public static void main(String[] args) {
// 定义char类型变量ch,赋值为'J'
char ch = 'J';
// 将变量ch转换为小写'j',并输出
ch = (char) (ch + 32);
System.out.println(ch);


// 定义char类型变量ch2,赋值为'a'
char ch2 = 'a';
// 将变量ch2转换为大写'A',并输出
ch2 -= 32;
System.out.println(ch2);


// 定义double类型变量d3,int类型变量i3
double d3 = 3.5;
int i3 = 100;

// 定义变量sum3,保存d3和i3的和,将sum3去除小数部分并输出.
double sum3 = d3 + i3;
System.out.println("sum3的的值:"+ sum3);
System.out.println("sum3的整数部分的值:"+(int) sum3);


// 定义double类型变量d4,int类型变量i4
double d4 = 5.8;
int i4 = 300;
// 定义int变量mul4,保存d4和i4乘积的整数部分,并输出
int mul4 = (int) (d4 * i4);
System.out.println("mul4的整数部分值:"+mul4);

}
}

第四题

  • 编写步骤:
  1. 定义类 Test4
  2. 定义 main方法
  3. 定义两个int类型变量a1和a2,分别赋值10,11,判断变量是否为偶数,拼接输出结果
  4. 定义两个int类型变量a3和a4,分别赋值12,13,判断变量是否为奇数,拼接输出结果
  • 参考答案:
public class Test4 {
public static void main(String[] args) {
// 定义两个int类型变量a1和a2,分别赋值10,11,判断变量是否为偶数,拼接输出结果
int a1 = 10;
int a2 = 11;
boolean b1 = a1 % 2 == 0;
boolean b2 = a2 % 2 == 0;
System.out.println("10是偶数?" + b1);
System.out.println("11是偶数?" + b2);
// 定义两个int类型变量a3和a4,分别赋值12,13,判断变量是否为奇数,拼接输出结果
int a3 = 12;
int a4 = 13;
boolean b3 = a3 % 2 == 1;
boolean b4 = a4 % 2 == 1;
System.out.println("12是奇数?" + b3);
System.out.println("13是奇数?" + b4);
}
}

第五题

  • 编写步骤:
  1. 定义类 Test5
  2. 定义 main方法
  3. 定义一个int类型变量a,变量b,都赋值为20.
  4. 定义boolean类型变量bo , 判断++a 是否被3整除,并且a++ 是否被7整除,将结果赋值给bo
  5. 输出a的值,bo的值.
  6. 定义boolean类型变量bo2 , 判断b++ 是否被3整除,并且++b 是否被7整除,将结果赋值给bo2
  7. 输出b的值,bo2的值.
  • 参考答案:
public class Test5 {
public static void main(String[] args) {
//定义一个int类型变量a,赋值为20.
int a = 20;
//定义boolean类型变量bo , 判断++a 是否被3整除,并且a++ 是否被7整除,将结果赋值给bo
boolean bo = ++a % 3 == 0 && a++ % 7 == 0;
//输出a的值,bo的值.
System.out.println("bo的值:" + bo);
System.out.println("a的值:" + a);
System.out.println("-------------");
//定义一个int类型变量b,赋值为20.
int b = 20;
//定义boolean类型变量bo2 , 判断b++ 是否被3整除,并且++b 是否被7整除,将结果赋值给bo2
boolean bo2 = b++ % 3 == 0 && ++b % 7 == 0;
//输出b的值,bo2的值.
System.out.println("bo2的值:" + bo2);
System.out.println("b的值:" + b);
}
}

第六题

  • 编写步骤:
  1. 定义类 Test6
  2. 定义 main方法
  3. 定义方法printNum,在main方法中调用printNum方法
  4. printNum方法中,定义int变量a赋值为9,b也赋值为9
  5. printNum方法中,定义int变量num赋值为++a.
  6. printNum方法中,定义boolean变量bo,使用三元运算符赋值,当num>=10,赋值为true,否则为false,打印bo的值
  7. printNum方法中,定义int变量num2赋值为b++.
  8. printNum方法中,定义boolean变量bo2,使用三元运算符赋值,当num2>=10,赋值为true,否则为false.打印bo2的值
  • 参考答案:
public class Test6 {
public static void main(String[] args) {
// 在main方法中调用printNum方法
printNum();
}

private static void printNum() {

// printNum方法中,定义int变量a赋值为9,b也赋值为9
int a = 9;
int b = 9;

// printNum方法中,定义int变量num赋值为++a.
int num = ++a;
// printNum方法中,定义boolean变量bo,使用三元运算符赋值,当num>=10,赋值为true,否则为false,打印bo的值
boolean bo = (num >= 10) ? true : false;
System.out.println("bo的值"+bo);

// printNum方法中,定义int变量num2赋值为b++.
int num2 = b++;
// printNum方法中,定义boolean变量bo2,使用三元运算符赋值,当num2>=10,赋值为true,否则为false,打印bo2的值
boolean bo2 = (num2 >= 10) ? true : false;
System.out.println("bo2的值"+bo2);
}
}


第七题

  • 编写步骤:
  1. 定义类 Test7
  2. 定义 main方法
  3. 定义方法printNum,在main方法中调用printNum方法
  4. printNum方法中,定义float变量f1赋值12345.01
  5. printNum方法中,定义float变量f2赋值12345.00
  6. printNum方法中,定义float 变量 var1 , 使用三元运算符赋值,当f1大于等于f2时,赋值12456 ,当f1小于f2赋值12456.02
  7. printNum方法中,定义float 变量 var2 , 保存var1 与1024的和.
  8. printNum方法中,同时输出var1,var2的值.
  • 参考答案:
public class Test7 {

public static void main(String[] args) {
// 在main方法中调用printNum方法
printNum();

}

public static void printNum() {
// 定义float变量f1赋值12345.01,定义float变量f2赋值12345.00
float f1 = 12345.01F;
float f2 = 12345.00F;

// 定义float变量var1 , 使用三元运算符赋值,当f1大于等于f2时,赋值12456 ,当f1小于f2赋值12456.02
float var1 = (f1 >= f2) ? 12456 : 12456.02F;
// 定义float 变量 var2 , 保存var1 与1024的和.
float var2 = var1 + 1024;
// 输出var1,var2的值.
System.out.println("var1的值为: " + var1 + " var2的值为:" + var2);
}
}

第八题

  • 按步骤编写代码,效果如图所示:
  • 编写步骤:
  1. 定义类 Test8
  2. 定义 main方法
  3. 定义printNum方法,在main方法中调用printNum方法
  4. printNum方法中,定义int类型变量i赋值为10,j 赋值为20;
  5. printNum方法中,将 i/5 的商 与 j的和 赋值给j
  6. printNum方法中,定义int类型变量k,将j赋值给k.
  7. printNum方法中,最后同时输出 i, j ,k 的值,查看结果.
  • 参考答案:

public class Test8 {
public static void main(String[] args) {
printNum();
}

public static void printNum() {

int i = 10;
int j = 20;
j += i / 5;
int k = j;

System.out.println("i:" + i + " j:" + j + " k:" + k);

}

}

### 后俩扩展题目:
### 第九题

- 按步骤编写代码,效果如图所示:

- 编写步骤:

1. 定义类 Test9
2. 定义 main方法
3. 定义printString方法
4. printNum方法中,定义String 类型变量str.
5. printNum方法中,定义int类型变量num,赋为任意整数值.
6. printNum方法中,通过三元运算符,判断num为偶数,将"偶数"赋值给str,否则将"奇数"赋值给str
7. printNum方法中,输出拼接效果

- 参考答案:

```java

public class Test9 {
public static void main(String[] args) {

printString();

}

public static void printString() {
String str ;
int num = 69;
str = (num % 2== 0)? "偶数": "奇数";
System.out.println("num:"+num+"是"+str);
}
}

第十题

  • 编写步骤:
  1. 定义类 Test10
  2. 定义 main方法
  3. 定义add方法,打印两个变量的和
  4. 定义sub方法,打印两个变量的差
  5. 定义mul方法,打印两个变量的积
  6. 定义div方法,打印两个变量的商
  7. 定义remain方法,打印两个变量的余数
  8. main方法中,依次调用add方法,sub方法,mul方法,div方法,remain方法
  • 参考答案:
public class Test10 {
public static void main(String[] args) {
add();
sub();
mul();
div();
remain();
}
public static void add() {
int x = 100;
int y = 200;

// 打印x和y的和 到控制台
System.out.println("x,y的和为:" + (x + y));
}

public static void sub() {
int x = 100;
int y = 200;

// 打印x和y的和 到控制台
System.out.println("x,y的差为:" + (x - y));
}

public static void mul() {
int x = 100;
int y = 200;

// 打印x和y的积 到控制台
System.out.println("x,y的积为:" + (x * y));
}

public static void div() {
int x = 100;
int y = 200;

// 打印x和y的商 到控制台
System.out.println("x,y的商为:" + (x / y));
}

private static void remain() {
int x = 100;
int y = 200;

// 打印x和y的余数 到控制台
System.out.println("x,y的余数为:" + (x % y));

}
}

第二部分 数组

第一题:需求实现

  • 模拟大乐透号码:
  • 一组大乐透号码由10个1-99之间的数字组成
  • 定义方法,打印大乐透号码信息
  • 开发提示:
  • 使用数组保存录入的号码
  • 参考答案:
public class Test1 {
public static void main(String[] args) {
int[] arr = {10,20,30,40,50, 60,66,70,80,99};
printNum(arr);
}

public static void printNum(int[] arr) {
System.out.println("您的大乐透号码为:");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
}

第二题:需求实现

  • 打印扑克牌.
  • 开发提示:
  • 使用两个字符串数组,分别保存花色和点数
public class Test2 {
public static void main(String[] args) {
// 花色数组
String[] hs = {"黑桃","红桃","梅花","方片"};
// 点数数组
String[] ds = {"A","2","3","4", "5","6","7","8","9","10","J","Q","K"};
printCard(hs,ds);
}
public static void printCard(String[] hs ,String[] ds){
for (int hs_index = 0; hs_index < hs.length; hs_index++) {
for (int ds_index = 0; ds_index < ds.length; ds_index++) {
// 拼接字符串
System.out.print( hs[hs_index] + ds[ds_index]+" ");
}
// 输出换行
System.out.println();
}
}
}

第三题:需求实现

  • 模拟在一副牌中,抽取第1张,第5张,第50张扑克牌。
  • 参考答案:
public class Test3 {
public static void main(String[] args) {
// 获取所有扑克牌
String[] puke = getPuke();

// 抽取指定的三种扑克牌
int num1 = 1;
int num2 = 5;
int num3 = 50;
String[] pk3 = get3(puke , num1 ,num2,num3);
// 打印抽取的牌
for (int i = 0; i < pk3.length; i++) {
System.out.print(pk3[i] + " ");
}
}

private static String[] getPuke() {

String[] colors={"黑色","红桃","梅花","方块"};
String[] nums={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};

String[] puke = new String[54];
int index = 0;
for (int i = 0; i < colors.length; i++) {
for (int j = 0; j < nums.length; j++) {
puke[index] = colors[i]+nums[j];
index ++;
}
}
puke[52] = "小王";
puke[53] = "大王";

return puke;

}

public static String[] get3(String[] puke, int i, int i2, int i3) {
String[] pk3 = new String[3];
pk3[0] = puke[i - 1];
pk3[1] = puke[i2 - 1];
pk3[2] = puke[i3 - 1];
return pk3;
}
}

第四题:需求实现

  • 统计字符
  • 字符数组:{‘a’,‘l’,‘f’,‘m’,‘f’,‘o’,‘b’,‘b’,‘s’,‘n’}
  • 定义printCount方法,统计每个字符出现的次数并打印到控制台。
  • 开发提示:
  • 将数字强制转换,根据ASCII码表转换为字符。
  • 可以定义长度26的数组,每个元素,对应去保存每种字符的出现次数,比如0索引保存a的次数,1索引保存b的次数,以此类推。
  • 参考答案:
public class Test4 {
public static void main(String[] args) {
// 获取长度100的字符数组
char[] charArray = {'a','l','f','m','f','o','b','b','s','n'};
// 统计字符数组中字母出现次数
printCount(charArray);
}
public static void printCount(char[] charArray) {
int[] count= new int[26];
// 对应保存字母出现的次数
for (int i = 0; i < charArray.length; i++) {
int c = charArray[i];
count[c- 97]++;
}
// 打印字母和次数
for (int i = 0, ch = 97; i < count.length; i++, ch++) {
if (count[i] != 0 ) {
System.out.println((char) ch + "--" + count[i]);
}
}
}
}

第五题:需求实现

  • 统计高于平均分的分数有多少个。
  • 定义数组[95, 92, 75, 56, 98, 71, 80, 58, 91, 91]。
  • 定义getAvg方法,获取一个数组中的平均数
  • 参考答案:
public class Test5 {
public static void main(String[] args) {
// 获取随机分数
int[] score = {95, 92, 75, 56, 98, 71, 80, 58, 91, 91};
// 获取平均分
int avg = getAvg(score);
// 定义计数的变量
int count = 0 ;
for (int i = 0; i < score.length; i++) {
if (score[i] > avg){
count++;
}
}
System.out.println("高于平均分:"+avg+" 的 个数有" + count+" 个");
}
// 获取平均分的方法
public static int getAvg(int[] arr) {
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum / arr.length;
}
}

第六题:需求实现

  • 定义sym方法,判断数组中的元素值是否对称.
  • 开发提示:
  • 数组中元素首尾比较。
  • 参考答案:
public class Test6 {
public static void main(String[] args) {
int[] arr = {1,2,3,4,3,2,1};
System.out.println(Arrays.toString(arr) +" 是否对称:" +sym(arr) );

int[] arr2 = {1,2,3,4,5,2,1};
System.out.println(Arrays.toString(arr2) +" 是否对称:" +sym(arr2) );
}

public static boolean sym(int[] arr) {
/*
start : 数组头
end :数组尾
*/
for (int start = 0 , end = arr.length -1 ; start <= end; start++, end--) {
// 如果两端一旦有元素不等,就返回false
if (arr[start] != arr[end]) {
return false;
}
}
return true;
}
}

第七题:需求实现

  • 定义equals方法,比较数组内容是否完全一致。
  • 开发提示:
  • 长度一致,内容一致,定义为完全一致。
  • 参考答案:
public class Test7 {
public static void main(String[] args) {

int[] arr = {1,2,3,4,3,2,1};
int[] arr2 = {1,2,3,4,3,2,1};
System.out.println(" 是否一致:" +equals(arr ,arr2) );

}
// 比较数组的内容
public static boolean equals(int[] arr1, int[] arr2) {
// 长度不同,返回false
if (arr1.length != arr2.length) {
return false;
}

//
for (int i = 0; i < arr1.length; i++) {
// arr1[i] 和 arr2[i]比较
/*
* 所有元素都相同才相同,也就是只要有一个不同,这两个数组就是不同
*/
if (arr1[i] != arr2[i]) {
return false;
}
}
return true;
}
}

第三部分 网络通信概述&TCP协议

第一题:ip地址和端口号概念

  1. 概述:
  • 请写出IP地址的概念:
  • 请写出端口号的概念:
  1. 解答:
  • IP地址:互联网协议地址(Internet Protocol Address),俗称IP.IP地址用来给一个网络中的计算机设备做唯一的编号.
  • 端口号:端口号用来给计算机里的应用程序(进程)做唯一的标识,用2个字节表示的整数,取值范围0~65535.

第二题:UDP协议

  1. 概述:判断下列说法是否正确
  • 由于UDP面向无连接的协议,可以保证数据完整性,因此在传输重要数据时采用UDP协议.
  1. 解答:错
  • 因为面向无连接,容易丢失包,所以不能保证数据完整.

第三题:TCP协议

  1. 概述:
  • TCP协议中”三次握手”,第一次握手指的是什么
  1. 解答:
  • 第一次握手:客户端向服务器发送请求,等待服务器确认

第四部分 线程池&lambda表达式

第一题:线程池概念

  1. 概述:
  • 请描述什么是线程池。
  1. 解答:
  • 线程池:其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源。

第二题:线程池优点

  1. 概述:
  • 请描述合理利用线程池能够带来的三个好处。
  1. 解答:
  1. 降低资源消耗。减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。
  2. 提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。
  3. 提高线程的可管理性。可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为消耗过多的内存,而把服务器累趴下(每个线程需要大约1MB内存,线程开的越多,消耗的内存也就越大,最后死机)。

第三题:Lambda表达式

  1. 概述:
  • 请列举Lambda语法的省略规则
  1. 解答:
  • 在Lambda标准格式的基础上,使用省略写法的规则为:
  1. 小括号内参数的类型可以省略;
  2. 如果小括号内有且仅有一个参,则小括号可以省略;
  3. 如果大括号内有且仅有一个语句,则无论是否有返回值,都可以省略大括号、return关键字及语句分号。

第四题:Lambda表达式

  1. 概述:
  • 请列举Lambda表达式的3个组成部分,并解释说明。
  1. 解答:
  • Lambda标准格式 Lambda省去面向对象的条条框框,格式由3个部分组成:一些参数,一个箭头,一段代码。
  • Lambda表达式的标准格式为:格式说明:
  1. 小括号内的语法与传统方法参数列表一致:无参数则留空;多个参数则用逗号分隔。
  2. ->是新引入的语法格式,代表指向动作。
  3. 大括号内的语法与传统方法体要求基本一致。

第五题:Lambda表达式

  1. 概述:
  • 请描述Lambda的使用前提
  1. 解答:
  • Lambda的语法非常简洁,完全没有面向对象复杂的束缚。但是使用时有几个问题需要特别注意:
  1. 使用Lambda必须具有接口,且要求接口中有且仅有一个抽象方法。无论是JDK内置的 Runnable 、 Comparator 接口还是自定义的接口,只有当接口中的抽象方法存在且唯一时,才可以使用Lambda。
  2. 使用Lambda必须具有上下文推断。也就是方法的参数或局部变量类型必须为Lambda对应的接口类型,才能使用Lambda作为该接口的实例。

第六题:多线程

02_18_Java语音进阶||day18_Java基础小节练习(17-20部分)数据类型转换&运算符&方法入门、数组、网络通信概述&TCP协议、线程池&lambda表达式_java


标签:02,Java,定义,int,System,运算符,out,public,变量
From: https://blog.51cto.com/u_15980166/6086808

相关文章