逃离土木 12.12

讨教亲戚里一位工作五六年的程序员,得到了一些指导。

2021.12.1号正式开始学java,12月完成尚硅谷的基础学习,作为笔记记录。

今天是学习的第十天,把自己从笔记里再度整理的重点知识梳理一下。

1.位运算

        2*8 -------2<<3 or 8<<1

2.扫描

        头一次接触,当天晚上整理时记录了一下,现在学到了import关键字,更理解了一些。

importjava.util.Scanner;
public class Scanner{
    public static void main(String args){
//这里实际上是新建一个Scanner分类的变量;
    Scanner scan=new Scanner(System.in);
    

    string name=scan.next();
//要记得大写
    int age=scan.nextInt();
    double weight=scan.nextDouble();

    }
}

 3.随机数

        同理,头一次接触随机数也是刚开始不理解,以为每项都需要记忆,现在明白这里是调用了方法。

int value=(int)(Math.random()*90+10)

\*
    1.首先随机数的初始类型为float型
      并且范围为[0.0,1.0)
    2.为了保证随机出的数为输入的变量类型,需要前加(int)强转
    3.目标范围[a,b]
      公式:*(b-a+1)+a
\*

4.字符串比较

        __.equals("__")

        可以比较字符串是否一样

5.Switch....case 语句

        这里有一个比较经典的,给出年月日,求算是第几天的代码

        根据条件,判断入口,相符入口就进入。

        进入后无break会接着顺序全部执行。

import java.util.Scanner;
class DayFind{
	public static void main(String[] args){
	
	Scanner scan=new Scanner(System.in);
	
	System.out.println("Enter 2021's month:");
	int month=scan.nextInt();
	System.out.println("Enter 2021's day");
	int day=scan.nextInt();
	
	int sumDays=0;

	switch(month){
	case 12:
		sumDays +=30;
	case 11:
		sumDays +=31;
	case 10:
		sumDays +=30;
	case 9:
		sumDays +=31;
	case 8:
		sumDays +=31;
	case 7:
		sumDays +=30;
	case 6:
		sumDays +=31;
	case 5:
		sumDays +=30;
	case 4:
		sumDays +=31;
	case 3:
		sumDays +=28;
	case 2:
		sumDays +=31;//add 1month
	case 1:
		sumDays += day;
	
	}
	System.out.println("2021 "+month+" month "+day+" is the "+sumDays+" day");

	}
}





		
	

	
import java.util.Scanner;
//break的用法





	class SwitchTest1{
	public static void main(String[] args){
	
	Scannerscan=new Scanner(System.in);
	
	int score=scan.nextInt();

	switch(score/10)
	{
		case 0:
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
		System.out.println("lose");
		break;
		case 6:
		case 7:
		case 8:
		case 9:
		case 10:
		System.out.println("pass");
		break;
					}
	}
} 

 

6. for循环

        我觉得是和if语句使用最多的,刚接触稍微有一点点不顺。

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package wbyjavatrip;

import java.util.Scanner;

public class ForTest1 {
    public ForTest1() {
    }

    public static void main(String[] args) {
        Scanner scan1 = new Scanner(System.in);
        System.out.println("输入m1:");
        int m1 = scan1.nextInt();
        System.out.println("输入n1:");
        int n1 = scan1.nextInt();
        int max1 = m1 <= n1 ? n1 : m1;

        for(int i1 = max1; i1 <= m1 * n1; ++i1) {
            if (i1 % n1 == 0 && i1 % m1 == 0) {
                System.out.println("最小公倍数:" + i1);
                break;
            }
        }

    }
}
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package wbyjavatrip;
//最小公约数

import java.util.Scanner;

public class ForTest {
    public ForTest() {
    }

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("输入m:");
        int m = scan.nextInt();
        System.out.println("输入n:");
        int n = scan.nextInt();
        int min = m <= n ? m : n;

        for(int i = min; i >= 1; --i) {
            if (m % i == 0 && n % i == 0) {
                System.out.println(i);
                break;
            }
        }

    }
}

        寻找完数

package Easywork;

public class FindWanNumber {
    public static void main(String[] args){
        int sum=0;
        for(int i=2;i<=1000;i++)
        {for(int j=1;j<i;j++)

            { if(i%j==0)
            {sum+=j;}
                            }
        if (sum==i)
        {System.out.println(sum);
                               }
            sum=0;                  }
    }
}

 

7.If

        写的比较难的一个是三数比较大小并且输出

import java.util.Scanner;
//彩票机器
class RanIf{
	public static void main(String[] args){
	Scanner scan=new Scanner(System.in);
	
	int num1=(int)(Math.random()*90+10);
	
	System.out.println("Enter ur number");
	int num2=scan.nextInt();

	if(num1/10==num2/10&&num1%10==num2%10)
	{System.out.println("u win 10000$");}
	else if(num1/10==num2%10&&num1%10==num2/10)
	{System.out.println("u win 3000$");}
	else if(num1/10==num2/10&&num1%10!=num2%10)
	{System.out.println("u win 1000$");}
	else if(num1/10!=num2/10&&num1%10==num2%10)
	{System.out.println("u win 1000$");}
	else if(num1/10==num2%10&&num1%10!=num2/10)
	{System.out.println("u win 500$");}
	else if(num1%10==num2/10&&num1/10!=num2%10)
	{System.out.println("u win 500$");}
	else 
	{System.out.println("u lose");}
	}
}
import java.util.Scanner;
//比较3大小 输出
	class ScanIfExer{
	public static void main(String[] args){
	
	Scanner scan=new Scanner(System.in);

	System.out.println("Enter num1");
	double num1=scan.nextDouble();

	System.out.println("Enter num2");
	double num2=scan.nextDouble();

	System.out.println("Enter num3");
	double num3=scan.nextDouble();
	
	if(num1>num2)
		{if(num2>num3) 
			{System.out.println(num3+" "+num2+" "+num1);}
		 else
			{if(num1>num3) 
				{System.out.println(num2+" "+num3+" "+num1);}
			 else{System.out.println(num2+" "+num1+" "+num3);}}}
	else{if(num2<num3){System.out.println(num1+" "+num2+" "+num3);}
	       else{if(num3>num1){System.out.println(num1+" "+num3+" "+num2);}
		else{System.out.println(num3+" "+num1+" "+num2);}}}
	}
}

8.do...while循环 

        这个感觉用的比较少,使用必定输出一回

package Easywork;
//流程控制的综合运用

import java.util.Scanner;

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

            boolean Flag=true;
            //记录详情
            String details="收支\t账户金额\t收支金额\t说 明\n";
            //初始金额
            int balance=10000;
            while(true){

                System.out.println("-----------------家庭收支记账软件-----------------");
                System.out.println("                   1 收支明细                     ");
                System.out.println("                   2 登记收入                     ");
                System.out.println("                   3 登记支出                     ");
                System.out.println("                   4 退    出                      \n");
                System.out.println("                   请选择(1-4):                     ");

                char selection=Utility.readMenuSelection();

                switch(selection){

                    case '1':
                        System.out.println("-----------------当前收支明细记录-----------------");

                        System.out.println(details);
                        System.out.println("--------------------------------------------------");
                        //System.out.println("1 收支明细");
                        break;
                    case '2':
                        //System.out.println("2 登记收入");
                        System.out.println("本次输入金额: ");
                        int money=Utility.readNumber();
                        System.out.println("本次输入说明: ");
                        String info=Utility.readString();
                        //处理balance
                        balance+=money;
                        //处理details
                        details+=("收入\t"+balance+"\t\t"+money+"\t\t\t"+info+"\n");
                        System.out.println("-----------------登记完成-----------------");
                        break;
                    case '3':
                        //System.out.println("3 登记支出");
                        System.out.println("本次支出金额: ");
                        int money1=Utility.readNumber();
                        System.out.println("本次支出说明: ");
                        String info1=Utility.readString();
                        if(balance>=money1){
                            balance-=money1;
                        }else{
                            System.out.println("账户额度不够");
                        }

                        details+=("支出\t"+balance+"\t\t\t"+money1+"\t\t"+info1+"\n");
                        System.out.println("-----------------登记完成-----------------");


                        break;
                    case '4':
                        //System.out.println("4 退    出");
                        System.out.println("确认是否退出(Y/N): ");
                        char isExit=Utility.readConfirmSelection();
                        if(isExit=='Y'){
                            Flag=false;
                        }
                }
            }
    }
}

9.数组

        数组的思维需要掌握,多维数组更是如此
 

        arr[0]-arr[n-1]  n个数

        String arr[5]  数组为5个空位

        int 0

        double 0.0

        boolean false

        指针指向null 如果未赋值

        遍历:for循环每个值输出一遍

        内存解析       栈  堆

        数组长度:arr.length
        
        二维数组:int[][] arr=new int [] []{{1,2},{3,4,5},{7,8,9}};
                 int[][] arr1=new int[3][2];
                 int[][] arr1=new int[3][];

10.数组的操作

        遍历

        

package Easywork;

public class FindPhoneNumber {
	public static void main(String[] args) {
		int[] arr = new int[] { 8, 2, 1, 0, 3 };
		int[] index = new int[] { 2, 0, 3, 2, 4, 0, 1, 3, 2, 3, 3 };
		String tel = "";
		for (int i = 0; i < index.length; i++) {
			tel += arr[index[i]];
		}
		System.out.println("手机号:" + tel);
	}

}

        复制

        最大 最小 平均 总和

package Easywork;

public class ArrayMaxMinAvgSum {
	public static void main(String[] args){
		int[] arr=new int[10];
		for(int i=0;i<arr.length;i++)
		{
			arr[i]=(int)(Math.random()*90+10);
		}
		//max
		int max=0;
		for(int i=0;i<arr.length;i++)
		{
			if(max<arr[i]){
				max=arr[i];
			}
		}
		//min
		int min=arr[0];
		for(int i=0;i<arr.length;i++)
		{
			if(min>arr[i]){
				min=arr[i];
			}
		}
		//allsum
		int sum=0;
		for(int i=0;i<arr.length;i++)
		{
			sum+=arr[i];
		}
		//avg
		int ave=sum/arr.length;
		
	}

}

        反转

        查找:线性

package Easywork;

public class LineSearch {
	public static void main(String[] args){
		//线性查找方法
		String[]arr=new String[]{"JJ","DD","MM","BB","GG","AA"};
		String dest="BB";
		boolean Flag=false;
		for(int i=0;i<arr.length;i++){
			if(dest.equals(arr[i])){
				System.out.println("在第"+i+"个");
				Flag=true;
				break;
			}
		}
		if(Flag==false){
		System.out.println("很遗憾,没有");}
	}

}

                   二分

package Easywork;

public class Two2TwoSarch {
	public static void main(String[] args){
		//二分法查找
		//前提:必须有序!
		int[] arr={-98,-34,2,34,54,66,79,105,210,333};
		int dest=-34;
		int head=0;//初始
		int end=arr.length-1;//末索引
		boolean Flag=true;
		
	
		while(head<=end){
			int middle=(head+end)/2;
			if(dest==arr[middle]){
				System.out.println("找到,位置为"+middle);
				Flag=false;
				break;
			}
			else if(arr[middle]>dest){
					end=middle-1;
				}else{
					head=middle+1;
				}
			}
		if(Flag==true){
			System.out.println("没找到");
		}
	}

}

                   定义头尾值

                   中间=(头+尾)/2

        排序:冒泡

                   两轮循环

                   第一轮找找最大数

                   第二轮判断相邻

package Easywork;
import java.util.Arrays;

public class Bubble {
	public static void main(String[] args){
		int[]arr=new int[]{34,5,22,-98,6,-76,0,-3};
		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;
					
				}
			}
		}
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]);
		}
		System.out.println(Arrays.toString(arr));
		
		for(int i=0;i<arr.length/2;i++){
			int temp=arr[i];
			arr[i]=arr[arr.length-i-1];
			arr[arr.length-i-1]=temp;
		}
		System.out.println(Arrays.toString(arr));
		
		int[]arr1=new int[arr.length];;
		for(int i=0;i<arr.length;i++){
			arr1[i]=arr[i];
		}
		System.out.println(Arrays.toString(arr1));
		
		int num=22;
		boolean Flag=false;
		for(int i=0;i<arr.length;i++){
			if(arr[i]==num){
				System.out.print("所查找的数字存在,位置在 "+"arr["+i+"]");
				Flag=true;
			}
		}
		if(Flag=false){
			System.out.print("所查找的数字不存在");
		}
	}

}
package Easywork;

public class BubbleAndSearch {
	public static void main(String[] args){
		Student[] stus=new Student[19];
		for (int i=0;i<stus.length;i++){
			//数组元素赋值
			stus[i]=new Student();
			//对象的属性赋值
			stus[i].number=(i+1);
			stus[i].state=(int)(Math.random()*(6-1+1)+1);
			stus[i].score=(int)(Math.random()*(100-0+1));
		}
		
		//打印三年级的学生信息
		for(int i=0;i<stus.length;i++){
			if(stus[i].state==3){
				System.out.println(stus[i].info());
			}
		}
		
		//冒泡算法排成绩高低,遍历所有学生信息
		for(int i=0;i<stus.length-1;i++){
			for(int j=0;j<stus.length-1-i;j++)
			{
				if(stus[j].score>stus[j+1].score){
					//此时交换对象! 不是交换数值
					Student temp=stus[j];
					stus[j]=stus[j+1];
					stus[j+1]=temp;
					
				}
			}
		}
		for(int i=0;i<stus.length;i++)
			System.out.println(stus[i].info());
		
		
	}
}



class Student {
	int number;
	int state;
	int score;
	
	public String info(){
		String info="学号:"+number+" "+"年级:"+state+" "+"成绩:"+score+" ";
		return info;
	}
}

 

                   快速

package Easywork;
import java.util.Arrays;
public class QuickerSort {
	private static int partition(int[] arr, int low, int high) {
        //指定左指针i和右指针j
        int i = low;
        int j= high;
        
        //将第一个数作为基准值。挖坑
        int x = arr[low];
        
        //使用循环实现分区操作
        while(i<j){//5  8
                //1.从右向左移动j,找到第一个小于基准值的值 arr[j]
                while(arr[j]>=x && i<j){
                        j--;
                }
                //2.将右侧找到小于基准数的值加入到左边的(坑)位置, 左指针想中间移动一个位置i++
                if(i<j){
                        arr[i] = arr[j];
                        i++;
                }
                //3.从左向右移动i,找到第一个大于等于基准值的值 arr[i]
                while(arr[i]<x && i<j){
                        i++;
                }
                //4.将左侧找到的打印等于基准值的值加入到右边的坑中,右指针向中间移动一个位置 j--
                if(i<j){
                        arr[j] = arr[i];
                        j--;
                }
        }
        
        //使用基准值填坑,这就是基准值的最终位置
        arr[i] = x;//arr[j] = y;
        //返回基准值的位置索引
        return i; //return j;
}
private static void quickSort(int[] arr, int low, int high) {//???递归何时结束
        if(low < high){
                //分区操作,将一个数组分成两个分区,返回分区界限索引
                int index = partition(arr,low,high);
                //对左分区进行快排
                quickSort(arr,low,index-1);
                //对右分区进行快排
                quickSort(arr,index+1,high);
        }

}

public static void quickSort(int[] arr) {
        int low = 0;
        int high = arr.length-1;
        quickSort(arr,low,high);
}

public static void main(String[] args) {
        //给出无序数组
        int arr[] = {72,6,57,88,60,42,83,73,48,85};

//输出无序数组
System.out.println(Arrays.toString(arr));
//快速排序
quickSort(arr);
//partition(arr,0,arr.length-1);
//输出有序数组
System.out.println(Arrays.toString(arr));

}



        
}

11.Arrays工具组

        数组综合运用

        

package Easywork;

import java.util.Scanner;

public class StudentGrade {
	public static void main(String[] args){
		System.out.println("输入学生人数: ");
		Scanner scan= new Scanner(System.in);
		int number=scan.nextInt();
		
		
		int[] grades=new int[number];
		
		
		System.out.println("请输入"+number+"个成绩");
		
		
		for(int i=0;i<grades.length;i++){
			grades[i]=scan.nextInt();
		}
		//获取数组的最大值!!!!
		
		int max=0;
		for(int i=0;i<grades.length;i++){
			if(grades[i]>=max){
				max=grades[i];
			}
		}
		System.out.println("最高分为:"+max);
		
		for(int i=0;i<grades.length;i++){
			if(grades[i]>=(max-10))
			{
				System.out.println("student"+i+" grade is "+grades[i]+" levle is A");
			}
			else if(grades[i]>=(max-20))
			{
				System.out.println("student"+i+" grade is "+grades[i]+" levle is B");
			}
			else if(grades[i]>=(max-30))
			{
				System.out.println("student"+i+" grade is "+grades[i]+" levle is C");
			}
			else
			{System.out.println("student"+i+" grade is "+grades[i]+" levle is D");}
		}
	}

}

12.递归

      方法调用递归

        1-100累加

        斐波那契数列

package Easywork;
//递归!
// 1-100所有数的和!
//f1=1,f0=4,f(n+2)=2*f(n+1)+f(n);
//费波纳列数列
public class Recursion{
	public static void main(String[] args){
		Recursion a=new Recursion();
		
		System.out.println(a.getSum(100));
		
		//1-10 sum
		a.f(10);
		System.out.println(a.f(10));
		//n项斐波那契数列
		a.Fibonacci(10);
		System.out.println(a.Fibonacci(10));
	}
	
	
	public int getSum(int n){
		if(n==1){
			return 1;
		}else{
			return n+getSum(n-1);
		}
		
		
	}
	
	public int f(int n){
		if(n==0){
			return 1;
		}else if(n==1){
			return 4;
		}else{
			return 2*f(n-1)+f(n-2);
		}
		
	
	}
	

	public int Fibonacci(int n){
		if(n==0){
			return 1;
		}
		else if(n==1){
			return 1;
		}else{
			return Fibonacci(n-2)+Fibonacci(n-1);
		}

	}
}

13.权限修饰符

14.构造器+重载

        Public Person()+{}

package Easywork;
//类和对象 调用方法 属性

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

	  PassObject a1=new PassObject();
	  Circle a2=new Circle();
	  a1.PrintAreas(a2, 6);
  }
}

class Circle{
	double radius;
	
	
	public double findArea(double a){
		double Area=a*a*Math.PI;
		return Area;
		
	}
}

class PassObject{
	
	public void PrintAreas(Circle c,int time){
		System.out.println("Radius"+"\t\t"+"Area");
		for(double i=0;i<time;i++){
			double Area=c.findArea(i);
			System.out.println(i+"\t\t"+Area);
		}
		System.out.println("\n");
		System.out.println(" now radius is:"+time);
	}
}

15.JavaBean

        元素

        构造器

        方法

16.UML类图

17.this.name=n;

18.package+import;

package Easywork;
//100以内所有素数
public class AllSuIn1001 {

    public static void main(String[] args){
        System.out.println("1");
        //设定flag作为是否除尽的标志!
        boolean isFlag=true;

        for(int i=2;i<=100;i++)

        {
            for(int j=2;j<=i-1;j++)
            {
                if(i%j==0)
                {isFlag=false;
                //打断改进!!!!!!!!!!!

                  break;                  }
            }
            if(isFlag ==true)
            {System.out.println(i);}
            //重置flag
            isFlag=true;                                             }





    }



}

最后是两个关于类和对象的调用,综合代码

1.三角形求面积

        类

        

package TriAngleTest;

public class TriAngle {
	private double base,height;
	
	public TriAngle(double n,double m){
		base=n;
		height=m;
	}

			
			
			
	
	public void findArea(){
		double Area=(base*height)/2;
		System.out.println(Area);
	}

}

        类+对象

package TriAngleTest;

public class TriAngleTest {
	public static void main(String args[]){
		TriAngle a=new TriAngle(4,4);
		a.findArea();
	}

}

2.账户和顾客 AccoountAndCustomer

类:账户 Accoount

package AccoountAndCustomer;

public class Account {
	private int id;
	private double balance;
	private double annuallnterestRate;
	
	public Account(int id,double balance,double annuallnterestRate){
		this.id=id;
		this.balance=balance;
		this.annuallnterestRate=annuallnterestRate;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public double getBalance() {
		return balance;
	}

	public void setBalance(double balance) {
		this.balance = balance;
	}

	public double getAnnuallnterestRate() {
		return annuallnterestRate;
	}

	public void setAnnuallnterestRate(double annuallnterestRate) {
		this.annuallnterestRate = annuallnterestRate;
	}
	
	public void withdraw(double amount){
		if(this.balance-amount<0){
			System.out.println("没钱了,穷逼!");
		}else
		{this.balance-=amount;
		System.out.println("成功取出:"+amount);}
	}
	public void deposit(double amount){
		this.balance+=amount;
		System.out.println("成功存入:"+amount);
	}
	
}

类:用户 Customer

package AccoountAndCustomer;

public class Customer {
	private String firstname;
	private String lastname;
	private Account account;
	
	
	public Customer(String f,String l){
		this.firstname=f;
		this.lastname=l;
	}

	
	
	public String getFirstname() {
		return firstname;
	}


	public String getLastname() {
		return lastname;
	}


	public Account getAccount() {
		
		return account;
	}



	public void setAccount(Account account) {
		this.account = account;
	}



	
	
	
	
	

}

对象:调用

package AccoountAndCustomer;

public class test1 {
	public static void main(String[] args){
		Customer a=new Customer("Jane","Smith");
		Account b=new Account(1000,2000,0.00123);
		a.setAccount(b);
		
		b.deposit(100);
		b.withdraw(960);
		b.withdraw(2000);
		
		String c="Customer ["+a.getFirstname()+","+a.getLastname()+"]"+" has a account:";
		String d="id is "+b.getId()+", "+"annuallnterestrate is "+b.getAnnuallnterestRate()*100+", balance is"+b.getBalance();
		System.out.println(c+d);
	}

}

唉,最后说一说,不到最后关节,还是喜欢拖延时间。

差的太多了,必须要加倍努力。

我不想再做错选择了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值