【Java学习日志3.18】3个简单的面试算法题+Windows指令

一 简单算法题

1、给定一个整数,把它的各位数字倒排过来形成一个新的整数。

例如:给定12345 输出54321;给定987 输出789

public class Demo01 {
	public static void main(String[] args) {
		int num = 12345;
		int result = 0;
		do {
			result =result * 10 + num % 10;
			num /= 10;
		} while(num > 0);
		System.out.println(result);
	}
}

2、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

/*
设这个数为x
x + 100 = n^2  x + 100 + 168 = m^2
m^2 - n^2 = (m + n)(m - n)=168
设 m + n = i  m - n = j   i * j = 168 说明i和j中至少有一个为偶数
m = (i + j) / 2    n = (i - j) / 2   说明i和j中要么都是偶数,要么都是奇数
i * j = 168   j >= 2    1 < i < 168 / 2 + 1   
*/
public class Demo02 {
	public static void main(String[] args){
		int j = 0, n = 0;
		for (int i = 1; i < 85; ++ 1){
			if (168 % i == 0){
				j = 168 / i;
				if (i > j && (i + j) % 2 == 0 && (i - j) % 2 == 0) {
					n = (i - j) / 2;
					System.out.println(n * n - 100);
				}
			}
		}
	}
}

3、给定一个非空数组、除某一个元素出现一次外,其他元素出现两次,找出这个只出现一次的元素并返回。例如给定[2,2,3,3,4,4,5],则返回值为5

public class Demo03 {
	public static void main(String[] args){
		int[] arrs = {4, 5, -1, 4, 6, 5, 6};
		int result = arrs[0];
		for (int i = 1, len = arrs.length; i < len; ++ i) {
			result ^= arrs[i];
		}
		System.out.println(result);
	}
}

二 简单的Windows指令

1 windows+x  打开快捷菜单

2 alt+A  打开管理员的windows终端

3 终端输入 start cmd 进入管理员权限的命令行终端

4 简单指令练习

cd切换或显示目录

md l mkdir创建自录rd lrmdir册除目录

fsutil file createnew,<文件名><文件大小>
创建文件
type <文件>查看文件中的内容
del <要删除的文件>

三 其他学习到的知识与体会

1.复合赋值位运算符“&=、^ =、| =”

这里百度讲的很好,上面的算法题第二题就是用异或的方法解的,因为result与每个数异或等于所有数同时异或,相同数字异或等于0,所以结果最后就是只有单独一个数的值赋值到result。 

2.for循环里++i性能比i++更好,因为少了一个中间变量

++i,与i++的区别如下

i++改变的只有i,++i既改变i,又改变赋值变量;

就是说i++的底层代码会产生一个变量去保存i的原来的值再去++

public static void main(String[] args) {
		// TODO Auto-generated method stub
		int i=0;
		int x=i++;//i的值改变了,但是把保存i原来的值的中间变量的值传给了x
		System.out.println(i++);
		System.out.println(x);
	}

 3 代码规范问题

运算符如“=”、“+=”、“/=”等左右两边需加空格,关键字后面如for、if、后面加空格,“,”、“;”后面加空格或换行,前面不加

代码层次需分明,用tab换行,确保代码块{}的最后一个“}”与关键字对齐

4 零散琐碎的知识

(1)子类的构造方法的第一行中默认(不显示)调用super();即调用了父类构造方法

如果父类里面没有定义参数为空的构造方法,那么必须在子类的构造方法的第一行显示的调用super(参数);语句调用父类当中其它的构造方法.

(2)接口中的常量默认都是为 public static final ,写与不写都是一样

(3)java中的重载与重写的区别:1、重载发生在本类,重写发生在父类与子类之间;2、重载的方法名必须相同,重写的方法名相同且返回值类型必须相同;3、重载的参数列表不同,重写的参数列表必须相同。4、子类覆写父类方法访问权限不能低于父类,private<default<protect<public

(4) 考虑到java只能单继承、多实现的原则,所以先继承,后实现,实现可以实现多个接口写在后边比较直观。public class Xxxx extends A implements B 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值