随笔 - 363, 文章 - 0, 评论 - 2, 阅读 - 23万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

01Java经典问题

Posted on   心默默言  阅读(246)  评论(0编辑  收藏  举报

1.利用Dos输出hello world

建立一个Test.java文件,放在e盘;

public class Test{
    public static void main(String[] args){
        System.out.println("hello world");
    }
}

进入e盘所在目录

注意:javac后面是文件Test.java,而java后面是Test(类名)。

2.Scanner中nextLine()方法和next()方法的区别

复制代码
import java.util.Scanner;

/*
 * 中间都不带空格
 */
public class ScannerString {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.println("请输入字符串(nextLine):");
        String strNextLine = input.nextLine();

        System.out.println("请输入字符串(next):");
        String strNext = input.next();

        System.out.println("strNextLine:" + strNextLine);
        System.out.println("strNext:" + strNext);
    }
}
复制代码

以上结果都没有问题。

复制代码
import java.util.Scanner;

/*
 * nextLine与next都有空格
 */
public class ScannerString {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.println("请输入字符串(nextLine):");
        String strNextLine = input.nextLine();

        System.out.println("请输入字符串(next):");
        String strNext = input.next();

        System.out.println("strNextLine:" + strNextLine);
        System.out.println("strNext:" + strNext);
    }
}
复制代码

next()方法读取到空白符就结束

nextLine()读取到回车结束也就是“\r”

 

复制代码
import java.util.Scanner;

/*
 * 第三次:我们将代码中next和nextLine的顺序调整一下,然后再进行测试
 */
public class ScannerString {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入字符串(next):");
        String strNext = input.next();

        System.out.println("请输入字符串(nextLine):");
        String strNextLine = input.nextLine();

        System.out.println("strNext:" + strNext);
        System.out.println("strNextLine:" + strNextLine);
    }
}
复制代码

 修改顺序后遇到的问题就是因为next()读取到空白符前的数据时结束了,然后把回车“\r”留给了nextLine();所以上面nextLine()没有输出,不输出不代表没数据,是接到了空(回车“/r”)的数据。

3.java异或运算

复制代码
public class XOR {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int i = 15;
        int j = 2;
        System.out.println("i^j:"+(i^j));
    }
}
复制代码

分析上面程序,i=15转成二进制是1111,j=2转成二进制是0010,根据异或的运算规则得到的是1101,转成十进制就是13.

4.利用异或进行加密

 

复制代码
import java.util.Arrays;
import java.util.Scanner;

public class Password {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scanner =new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String password = scanner.nextLine();
        char[] array = password.toCharArray();
        System.out.println(Arrays.toString(array));
        for (int i = 0; i < array.length; i++) {
            array[i] = (char)(array[i]^20000);
        }
        System.out.println("加密结果如下:");
        System.out.println(Arrays.toString(array));
        for (int i = 0; i < array.length; i++) {
            array[i] = (char)(array[i]^20000);
        }
        System.out.println("解密的结果如下:");
        System.out.println(Arrays.toString(array));
    }

}
复制代码

5.位运算实现乘法

复制代码
import java.util.Arrays;
import java.util.Scanner;

public class Example {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个数字:");
        long number = scanner.nextLong();
        System.out.println("该数字乘以2的运算符为:" + (number << 1));
        System.out.println("该数字乘以4的运算符为:" + (number << 2));
        System.out.println("该数字乘以8的运算符为:" + (number << 3));
        System.out.println("该数字乘以16的运算符为:" + (number << 4));
    }

}
复制代码

6.实现两个变量的交换,不借助第三个变量

复制代码
import java.util.Arrays;
import java.util.Scanner;

public class Example {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个变量a的值:");
        long a = scanner.nextLong();
        System.out.println("请输入一个变量b的值:");
        long b = scanner.nextLong();
        System.out.println("a=" + a + " " + "b=" + b);
        System.out.println("执行变量交换");
        a = a ^ b;
        b = b ^ a;
        a = a ^ b;
        System.out.println("a=" + a + " " + "b=" + b);
    }

}
复制代码

① 执行前两个赋值语句:“a=a∧b;”和“b=b∧a;”相当于b=b∧(a∧b)。而b∧a∧b等于a∧b∧b(异或满足交换律,结合律)。b∧b的结果为0,因为同一个数与本身相∧,结果必为0。因此b的值等于a∧0,即a,其值为3。
② 再执行第三个赋值语句:a=a∧b。由于a的值等于(a∧b),b的值等于(b∧a∧b),因此,相当于a=a∧b∧b∧a∧b,即a的值等于a∧a∧b∧b∧b,等于b。
  a得到b原来的值

7.判断是不是闰年

复制代码
import java.util.Arrays;
import java.util.Scanner;

/**
 * 判断一年是不是闰年:能被400整除或者能被4整除但不能被100整除
 */
public class Example {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个年份:");
        int year = scanner.nextInt();
        if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
            System.out.println(year + "是闰年");
        } else {
            System.out.println(year + "不是闰年");
        }

    }

}
复制代码

8.单例模式的应用

复制代码
class Emepror {

    private static Emepror emperor = null;

    private Emepror() {

    }

    public static Emepror getInstance() {
        if (emperor == null) {
            emperor = new Emepror();
        }
        return emperor;
    }

}

public class Test {
    public static void main(String[] args) {
        System.out.println("创建皇帝对象1");
        Emepror emepror1 = Emepror.getInstance();
        System.out.println("创建皇帝对象2");
        Emepror emepror2 = Emepror.getInstance();
        System.out.println("创建皇帝对象3");
        Emepror emepror3 = Emepror.getInstance();
        System.out.println(emepror1);
        System.out.println(emepror2);
        System.out.println(emepror3);
    }
}
复制代码

9.构造方法的应用

复制代码
class Person {
    private String name;
    private String gender;
    private String age;

    public Person() {
        // TODO Auto-generated constructor stub
        System.out.println("使用无参的构造方法创建对象");
    }

    public Person(String name, String gender, String age) {
        this.name = name;
        this.gender = gender;
        this.age = age;
        System.out.println("使用有参的构造方法创建对象");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

}

public class Test2 {
    public static void main(String[] args) {
        Person person1 = new Person();
        Person person2 = new Person("小明", "男", "24");
        System.out.println("员工1的信息:");
        System.out.println("员工姓名:" + person1.getName());
        System.out.println("员工性别:" + person1.getGender());
        System.out.println("员工年龄:" + person1.getAge());
        System.out.println("员工2的信息:");
        System.out.println("员工姓名:" + person2.getName());
        System.out.println("员工性别:" + person2.getGender());
        System.out.println("员工年龄:" + person2.getAge());
    }
}
复制代码

10.重写equals方法

复制代码
class Cat {
    private String name;
    private int age;
    private double weight;

    public Cat(String name, int age, double weight) {
        this.name = name;
        this.age = age;
        this.weight = weight;
    }

    @Override
    public boolean equals(Object obj) {
        // TODO Auto-generated method stub
        if (this == obj)
            return true;
        if (obj == null)
            return false;

        if (getClass() != obj.getClass())
            return false;
        Cat cat = (Cat) obj;
        return name.equals(cat.name) && (age == cat.age) && (weight == cat.weight);

    }

    @Override
    public String toString() {
        return "Cat [name=" + name + ", age=" + age + ", weight=" + weight + "]";
    }

}

public class TestCat {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Cat cat1 = new Cat("java", 12, 1.0);
        Cat cat2 = new Cat("python", 12, 8.0);
        Cat cat3 = new Cat("java", 12, 1.0);
        System.out.println("cat1" + cat1);
        System.out.println("cat2" + cat2);
        System.out.println("cat3" + cat3);
        System.out.println("cat1与cat2相同吗?"+cat1.equals(cat2));
        System.out.println("cat1与cat3相同吗?"+cat1.equals(cat3));
    }

}
复制代码

11.将一个int型数组转化成list类型

复制代码
package exam;

import java.util.*;

public class Main8 {
    public static void main(String[] args) {
        int[] a= {1,21,3,4};
        Integer[] b = new Integer[a.length];
        for (int i = 0; i < b.length; i++) {
            b[i] = a[i];
        }
        
        List<Integer> list= Arrays.asList(b);
        System.out.println(list);
        System.out.println("最大值为:");
        System.out.println(Collections.max(list)); 
        
        System.out.println("反转");
        Collections.reverse(list);
        System.out.println(list);
        
        System.out.println("打乱");
        Collections.shuffle(list);
        System.out.println(list);
        
        System.out.println("排序");
        Collections.sort(list);
        System.out.println(list);
        
        System.out.println("复制一个集合");
        List<Integer> copyList = new ArrayList<>();
        copyList.addAll(list);
        System.out.println(copyList);
        
    }
}
复制代码

 

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示