【Java基础】【进制转换&&基础练习,初级java工程师面试题

2.7 位运算-位移运算符

位运算概述 : 位运算符指的是二进制位的运算,先将十进制数转成二进制后再进行运算。在二进制位运算中,1表示true,0表示false。

位运算符介绍 :

在这里插入图片描述

代码 :

public class Demo3 {

/*

位移运算符:

<< 有符号左移运算,二进制位向左移动, 左边符号位丢弃, 右边补齐0

运算规律: 向左移动几位, 就是乘以2的几次幂

12 << 2

(0)0000000 00000000 00000000 000011000 // 12的二进制


有符号右移运算,二进制位向右移动, 使用符号位进行补位

运算规律: 向右移动几位, 就是除以2的几次幂

000000000 00000000 00000000 0000001(1) // 3的二进制


无符号右移运算符, 无论符号位是0还是1,都补0

010000000 00000000 00000000 00000110 // -6的二进制

*/

public static void main(String[] args) {

System.out.println(12 << 1); // 24

System.out.println(12 << 2); // 48

}

}

public class Demo4 {

/*

^ 运算符的特点

一个数, 被另外一个数, 异或两次, 该数本身不变

*/

public static void main(String[] args) {

System.out.println(10 ^ 5 ^ 10);

}

}

3.基础练习


3.1 数据交换

案例需求

​ 已知两个整数变量a = 10,b = 20,使用程序实现这两个变量的数据交换

最终输出a = 20,b = 10;

代码实现

public class Test1 {

/*

需求:已知两个整数变量a = 10,b = 20,使用程序实现这两个变量的数据交换

最终输出a = 20,b = 10;

思路:

  1. 定义一个三方变量temp,将a原本记录的值,交给temp记录 (a的值,不会丢了)

  2. 使用 a 变量记录 b 的值,(第一步交换完毕,b的值也丢不了了)

  3. 使用 b 变量记录 temp的值,也就是a原本的值 (交换完毕)

  4. 输出 a 和 b 变量即可

*/

/*

动态初始化格式:

数据类型[][] 变量名 = new 数据类型[m][n];

m表示这个二维数组,可以存放多少个一维数组

n表示每一个一维数组,可以存放多少个元素

*/

public static void main(String[] args) {

int a = 10;

int b = 20;

// 将a原本记录的值,交给temp记录 (a的值,不会丢了)

int temp = a;

// 用 a 变量记录 b 的值,(第一步交换完毕,b的值也丢不了了)

a = b;

// 使用 b 变量记录 temp的值,也就是a原本的值 (交换完毕)

b = temp;

// 输出 a 和 b 变量即可

System.out.println(“a=” + a);

System.out.println(“b=” + b);

}

}

3.2 数组反转

案例需求 :

​ 已知一个数组 arr = {19, 28, 37, 46, 50}; 用程序实现把数组中的元素值交换,

​ 交换后的数组 arr = {50, 46, 37, 28, 19}; 并在控制台输出交换后的数组元素

实现步骤 :

  1. 定义两个变量, start和end来表示开始和结束的指针.

  2. 确定交换条件, start < end 允许交换

  3. 循环中编写交换逻辑代码

  4. 每一次交换完成, 改变两个指针所指向的索引 start++, end–

  5. 循环结束后, 遍历数组并打印, 查看反转后的数组

代码实现 :

public class Test2 {

/*

需求:已知一个数组 arr = {19, 28, 37, 46, 50}; 用程序实现把数组中的元素值交换,

交换后的数组 arr = {50, 46, 37, 28, 19}; 并在控制台输出交换后的数组元素。

步骤:

  1. 定义两个变量, start和end来表示开始和结束的指针.

  2. 确定交换条件, start < end 允许交换

  3. 循环中编写交换逻辑代码

  4. 每一次交换完成, 改变两个指针所指向的索引 start++, end–

  5. 循环结束后, 遍历数组并打印, 查看反转后的数组

*/

public static void main(String[] args) {

int[] arr = {19, 28, 37, 46, 50};

// 1. 定义两个变量, start和end来表示开始和结束的指针.

int start = 0;

int end = arr.length -1;

// 2. 确定交换条件, start < end 允许交换

// 4. 每一次交换完成, 改变两个指针所指向的索引 start++, end–

// for(int start = 0, end = arr.length -1; start < end; start++, end–)

for( ; start < end; start++, end–){

// 3. 循环中编写交换逻辑代码

int temp = arr[start];

arr[start] = arr[end];

arr[end] = temp;

}

for (int i = 0; i < arr.length; i++) {

System.out.println(arr[i]);

}

}

}

3.3 二维数组概述

概述 : 二维数组也是一种容器,不同于一维数组,该容器存储的都是一维数组容器

3.4 二维数组动态初始化

动态初始化格式:

数据类型[][] 变量名 = new 数据类型[m][n];

m表示这个二维数组,可以存放多少个一维数组

n表示每一个一维数组,可以存放多少个元素

public class Demo1Array {

/*

动态初始化格式:

数据类型[][] 变量名 = new 数据类型[m][n];

m表示这个二维数组,可以存放多少个一维数组

n表示每一个一维数组,可以存放多少个元素

*/

public static void main(String[] args) {

// 数据类型[][] 变量名 = new 数据类型[m][n];

int[][] arr = new int[3][3];

/*

[[I@10f87f48

@ : 分隔符

10f87f48 : 十六进制内存地址

I : 数组中存储的数据类型

[[ : 几个中括号就代表的是几维数组

*/

System.out.println(arr);

/*

二维数组存储一维数组的时候, 存储的是一维数组的内存地址

*/

System.out.println(arr[0]);

System.out.println(arr[1]);

System.out.println(arr[2]);

System.out.println(arr[0][0]);

System.out.println(arr[1][1]);

System.out.println(arr[2][2]);

// 向二维数组中存储元素

arr[0][0] = 11;

arr[0][1] = 22;

arr[0][2] = 33;

arr[1][0] = 11;

arr[1][1] = 22;

arr[1][2] = 33;

arr[2][0] = 11;

arr[2][1] = 22;

arr[2][2] = 33;

// 从二维数组中取出元素并打印

System.out.println(arr[0][0]);

System.out.println(arr[0][1]);

System.out.println(arr[0][2]);

System.out.println(arr[1][0]);

System.out.println(arr[1][1]);

System.out.println(arr[1][2]);

System.out.println(arr[2][0]);

System.out.println(arr[2][1]);

System.out.println(arr[2][2]);

}

}

3.5 二维数组访问元素的细节问题

问题 : 二维数组中存储的是一维数组, 那能不能存入 [提前创建好的一维数组] 呢 ?

答 : 可以的

代码实现

public class Demo2Array {

/*

问题: 二维数组中存储的是一维数组, 那能不能存入 [提前创建好的一维数组] 呢 ?

答 : 可以的

*/

public static void main(String[] args) {

int[] arr1 = {11,22,33};

int[] arr2 = {44,55,66};

int[] arr3 = {77,88,99,100};

int[][] arr = new int[3][3];

arr[2][3] = 100;

arr[0] = arr1;

arr[1] = arr2;

arr[2] = arr3;

System.out.println(arr[1][2]);

System.out.println(arr[2][3]);

}

}

3.6 二维数组静态初始化

完整格式 : 数据类型[][] 变量名 = new 数据类型[][]{ {元素1, 元素2…} , {元素1, 元素2…}

简化格式 : 数据类型[][] 变量名 = { {元素1, 元素2…} , {元素1, 元素2…} …};

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

总结

对于面试,一定要有良好的心态,这位小伙伴面试美团的时候没有被前面阿里的面试影响到,发挥也很正常,也就能顺利拿下美团的offer。
小编还整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家,

在这里插入图片描述

在这里插入图片描述

最后感谢大家的支持,希望小编整理的资料能够帮助到大家!也祝愿大家都能够升职加薪!

Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
[外链图片转存中…(img-xzg5NHzh-1711090383856)]
[外链图片转存中…(img-xWYADPzn-1711090383857)]
[外链图片转存中…(img-gTkB2Uch-1711090383857)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-xy8j6RMe-1711090383857)]

总结

对于面试,一定要有良好的心态,这位小伙伴面试美团的时候没有被前面阿里的面试影响到,发挥也很正常,也就能顺利拿下美团的offer。
小编还整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家,

[外链图片转存中…(img-J9afXOFG-1711090383858)]

[外链图片转存中…(img-ddgmYVDc-1711090383859)]

最后感谢大家的支持,希望小编整理的资料能够帮助到大家!也祝愿大家都能够升职加薪!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 23
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值