java基础代码

java基础代码
1.转义字符的使用?

public class Demo{
    public static void main(String[] args) {
        //转义字符的使用
        System.out.println("姓名:娜娜\n 性别:女\n 年龄:18\n");
        System.out.println("123456\rabc");//输出:abc456原因:\r是回车键输出123456之后又回退到1之前所以输出abc的时候就会吧123覆盖掉
        System.out.println("姓名\t\t性别\t\t年龄");
        System.out.println("娜娜\t\t女\t\t20");
        System.out.println('\\');//输出一个\
        System.out.println('\'');//输出一个'
        System.out.println("'");//输出一个'
        System.out.println('"');//输出一个"
        System.out.println('"');//输出一个"
    }
}

2.强制转换数据类型时发生的特殊情况

public class Demo{
    public static void main(String[] args) {
        //byte型如果超出取值范围之后怎么搞
        int i = 128;
        int i1 = 198;
        byte b1 = (byte)i;
        byte b2 = (byte)i1;
        System.out.println(b1);//b1=-128
        System.out.println(b2);//b2=-58
    }
}

对上述代码的解释:-128在byte类型中正好就是10000000
在入图片描述

3.要求:有一个四位数字的会员卡号,使用“/”和“%”运算符分解获得会员卡各个位上的数字,将各个位上数字求和。3865

public class Demo15{
	public static void main(String[] args){
		int card=3865;
		int ge=card%10;
		int shi=card/10%10;
		int bai=card/100%10;
		int qian=card/1000;
		int r=ge+shi+bai+qian;
		System.out.println("结果是:"+r);
	}
}

4.case穿透的使用:输出每个月份的天数

public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入月份:");
        int month = scan.nextInt();
        switch(month){
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                System.out.println(month + "月有31天");
            case 2:
                System.out.println(month + "月有28天");
            case 4:
            case 6:
            case 9:
            case 11:
                System.out.println(month + "月有30天");
        }
    }

5.百元买白鸡问题
百钱买百鸡,公鸡3钱一个,母鸡2钱一个,小鸡三个一钱,问
能买多少个公鸡、母鸡、和小鸡?

public class Demo14 {
    public static void main(String[] args) {
        for (int x = 1; x <= 33; x++){
            for (int y = 1; y <= 50; y++){
                if (8*x + 5*y ==200){
                    System.out.println("公鸡有" + x +"个,母鸡有" + y + "个,小鸡有" + (100-x-y) + "个");
                }
            }
        }
    }
}


思路:在这里插入图片描述
6.打印图形的问题
在这里插入图片描述

public class CauseTest {
        public static void main(String[] args){
            Scanner scan = new Scanner(System.in);
            System.out.println("请输入一个整数");
            int n = scan.nextInt();
            for (int i = 1; i <= n; i++){
                for (int j = 1; j <= n-i; j++){
                    System.out.print(" ");
                }
                for (int k = 1; k <= 2*i-1; k++){
                    System.out.print("*");
                }
                System.out.println();
            }
        }
}

在这里插入图片描述
打印上图中的第二个图像

public class CauseTest {
        public static void main(String[] args){
            Scanner scan = new Scanner(System.in);
            System.out.println("请输入一个整数");
            int n = scan.nextInt();
            //打印上半个图案
            for (int i = 1; i <= n; i++){
                for (int j = 1; j <= n-i; j++){
                    System.out.print(" ");
                }
                for (int k = 1; k <= 2*i-1; k++){
                    System.out.print("*");
                }
                System.out.println();
            }
            //打印下半个图案
            for (int i = n; i >=1; i--){
                for (int j = 1; j <= n-i;j++){
                    System.out.print(" ");
                }
                for (int k = 1; k <= 2 * i - 1;k++){
                    System.out.print("*");
                }
                System.out.println();
            }
        }
}

打印中间是空心的图像

public class CauseTest {
        public static void main(String[] args){
            Scanner scan = new Scanner(System.in);
            System.out.println("请输入一个整数");
            int n = scan.nextInt();
            //打印上半部分
            for (int i = 1; i <= n; i++){
                for (int j = 1; j <= n- i; j++){
                    System.out.print(" ");
                }
                for (int k = 1; k <= 2*i-1;k++){
                    if (k == 1 || k == 2*i-1 ){
                        System.out.print("*");
                    }else{
                        System.out.print(" ");
                    }
                }
                System.out.println();
            }
            for (int i = n-1; i >= 1;i--){
                for (int k = 1; k <= n - i; k++){
                    System.out.print(" ");
                }
                for (int j = 1; j <= 2*i-1;j++){
                    if (j == 1 || j == 2*i-1){
                        System.out.print("*");
                    }else{
                        System.out.print(" ");
                    }
                }
                System.out.println();
            }
        }
}

在这里插入图片描述
7.斐波那契数列前30项求和

public class CauseTest {
        public static void main(String[] args){
           int[] arr = new int[30];//总数
           int sum = 0;
           for (int i = 0; i < 30; i++){
               if (i == 0 || i == 1){
                   arr[i] = 1;
                   sum += arr[i];
               }else{
                   arr[i] = arr[i-1] + arr[i-2];
                   sum += arr[i];
               }
           }
            System.out.println("前30项的和为:" + sum);
        }
}

在这里插入图片描述
8.杨辉三角
打印杨辉三角的十行

public class CauseTest {
        public static void main(String[] args){
            int[][] arr = new int[10][10];
            for (int i = 0; i < 10; i++){//控制行数
                for (int j = 10-i; j >= 1; j--){
                    System.out.print(" ");
                }
                for (int j = 0; j <= i; j++){
                    if (j == 0 || j == i){
                        arr[i][j] = 1;
                        System.out.print(arr[i][j] + " ");
                    }else{
                        arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
                        System.out.print(arr[i][j]+ " ");
                    }
                }
                System.out.println();
            }
        }
}

在这里插入图片描述
9.打印100以内的所有素数

//第一种方法:
public class CauseTest {
    public static void main(String[] args){
       for (int i= 2; i <= 100; i++){
           boolean flag = true;
           for (int j = 2; j <= Math.sqrt(i); j++){
               if (i % j == 0){
                   flag = false;
                   break;
               }
           }
           if (flag){
               System.out.println(i);
           }
       }
    }
}
//第二种方法:
//使用方法。
public class CauseTest {
    public static void main(String[] args) {
        for (int i = 2; i <=100; i++) {
                if (prime(i)){
                    System.out.println(i);
                }
        }
    }
    public static boolean prime(int x){
        for (int i = 1; i <= Math.sqrt(x); i++) {
            if (x % i == 0){
                return false;
            }
        }
        return true;
    }
}

10.比较三个数的大小

public class CauseTest {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in );
        System.out.println("请输入三个数");
        int a = scan.nextInt();
        int b = scan.nextInt();
        int c = scan.nextInt();
        int max = a;
        if (max < b ){
            max = b;
        }
        if (max < c){
            max = c;
        }
        System.out.println(max);
    }
}

11.数组的扩容

public class Demo1 {
    public static void main(String[] args) {
//        数组的复制
        int[] arr1 = new int[]{5,6,9,8,4};
        //1.创建比原数组长度长的数组
        int[] arr2 = new int[arr1.length * 2];
        //2.复制值
        for (int i = 0; i < arr1.length; i++) {
            arr2[i] = arr1[i];
        }
        //3.地址赋给新数组
        arr1 = arr2;
        for (int i : arr2) {
            System.out.println(i);
        }
    }
}

12.数组的插入

public class CauseTest {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int[] arr = new int[10];
        arr[0] = 5;
        arr[1] = 8;
        arr[2] = 9;
        arr[3] = 3;
        arr[4] = 1;
        int size = 5;
        System.out.println("请输入你要插入的下标:");
        int i = scan.nextInt();
        System.out.println("请输入你要插入的元素:");
        int n = scan.nextInt();
        if (i >= 0 && i <= size){
            for (int j = size; j > i; j--) {
                arr[j] =arr[j-1];
            }
            arr[i] = n;
            size++;
            for (int i1 : arr) {
                System.out.print(i1 + "\t");
            }
        }else{
            System.out.println("输入有误,请重新输入。");
        }
    }
}

13.数组的删除

public class CauseTest {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int[] arr = new int[10];
        arr[0] = 5;
        arr[1] = 8;
        arr[2] = 9;
        arr[3] = 3;
        arr[4] = 1;
        int size = 5;//数组中总共的元素
        System.out.println("请输入你要删除元素的位置:");
        int pos = scan.nextInt();
        if (pos >= 0 && pos < size){
            for (int j = pos; j < size - 1; j++) {
                arr[j] =arr[j+1];
            }
            arr[size-1] = 0;
            size--;//删除之后数组中元素的个数也会变少
            for (int i1 : arr) {
                System.out.print(i1 + "\t");
            }
        }else{
            System.out.println("输入有误,请重新输入。");
        }
    }
}

14.数组中的二分查找(注意:数组必须是有序的)

 public static int binarySearch(int[] arr, int key){
        int i = 0;
        int j = arr.length-1;
        while (i <= j ){
            int mid = (i + j)/2;
            if (key > arr[mid]){
                i = mid + 1;
            }else if(key < arr[mid]){
                j = mid -1;
            }else{
                return mid;
            }
        }
        return -1;
    }

15.java中的排序算法

public class CauseTest {
    public static void main(String[] args) {
        int[] arr = new int[]{5,6,4,8,9,7,2,1,3};
        selectSort(arr);
        for (int i : arr) {
            System.out.print(i);
        }
    }
    //冒泡排序
    public static void bubbleSort(int[] arr){
        for (int i = 0; i < arr.length-1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] > arr[j+1]){
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
    }
    //插入排序
    public static void insertSort(int[] arr){
        for (int i = 1; i < arr.length;i++){
            int pos = i-1;
            int t = arr[i];
            while (pos >= 0 && arr[pos] > t){
                arr[pos+1] = arr[pos];
                pos--;
            }arr[pos + 1] = t;
        }
    }
    //选择排序
    public static void selectSort(int[] arr){
        for (int i = 0; i < arr.length-1; i++){
            int min = i;
            for (int j = i+1; j < arr.length; j++){
                if (arr[min] > arr[j]){
                    min = j;
                }
            }if (min != i){
                int t = arr[min];
                arr[min] = arr[i];
                arr[i] = t;
            }
        }
    }
    //希尔排序(等于一种特殊的插入排序 加上第一个for条件之后,剩下的代码就是插入排序代码中的1全改成gap就可以了)
    public static void shellSort(int[] arr){
        for (int gap = arr.length/2;gap >=1; gap = gap/2){
            for (int i = gap; i < arr.length; i++){
                int pos = i-gap;
                int t = arr[i];
                while (pos >= 0 && arr[pos] > t){
                    arr[pos+gap] = arr[pos];
                    pos--;
                }arr[pos + gap] = t;
            }
        }
    }
    //快排
     public static void quickSort(int[] arr,int start,int end){
        int i = start;
        int j = end;
        int pivot = arr[start];
        while (i < j){
            //从后往前
            while (i < j){
                if (arr[j] > pivot){
                    j--;
                }else{
                    arr[i] = arr[j];
                    i++;
                    break;
                }
            }
            //从前往后
            while (i < j){
                if (arr[i] < pivot){
                    i++;
                }else{
                    arr[j] = arr[i];
                    j--;
                    break;
                }
            }
        }
        arr[i] = pivot;
        //判断左边是否有元素
        if (start < i-1){
            quickSort(arr, start, i-1);
        }
        //判断右边是否有元素
        if (end > j+1){
            quickSort(arr, j+1, end);
        }
    }
}

16利用阻塞队列解决生产者消费者问题

public class TestBlockingQueue {
    public static void main(String[] args) {
        BlockingDeque<String> queue = new LinkedBlockingDeque<String>(5);
        Runnable consume = new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 30; i++) {
                    String take;
                    try {
                        take = queue.take();
                        System.out.println(Thread.currentThread().getName() + "消费了" + take);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }

                }
            }
        };

        Runnable product = new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 30; i++) {
                    try {
                        queue.put("面包" + i);
                        System.out.println(Thread.currentThread().getName() + "生产了" + i + "号面包");
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };
        ExecutorService es = Executors.newFixedThreadPool(2);
        es.submit(consume);
        es.submit(product);
        es.shutdown();
    }
}
  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值