(day1)自学java基础

本文介绍了Java编程的基础知识,包括Java环境变量的配置、基础概念如helloworld案例、数据类型、运算符、循环结构、数组的使用,以及方法的定义和调用。还涉及到了键盘输入、循环的高级用法和数组内存图的解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

非原创,记录学习过程,为方便自己后期复习

目录

1.Java基础概念

2.运算符

 3.判断

 4.循环

5.循环高级

 6.数组

7.数组的内存图

8.方法


ctrl+alt+L 自动格式化代码

为什么要配置环境变量?

我们想在任意目录都可以打开指定软件,就可以把软件的路径配置到环境变量中。

打开环境变量:系统——》高级系统设置——》高级(环境变量)——》path(编辑)

 下载安装JDK:https://www.oracle.com

1.Java基础概念

1.helloworld小案例

javac编译后用java.exe运行

javac编译后会生成一个新文件

用java运行,不用带后缀

 

2.关键字、字面量、变量

3. 计算机的存储规则

 任意数据都是以二进制存储的

文本:数字(转二进制),字母(查询码表),汉字(查询码表)

图片:通过每一个像素点中的RGB三原色来存储

声音:对声音的波形图进行采样再存储

4.数据类型

数据类型相同,取值范围不同 。

如果要定义long类型的变量,在数值后面加一个L后缀(long m=99999999L)。

如果要定义float类型的变量,在数值后面加一个后F缀(float m=10.1F)。

 5.标识符

 标识符:就是给类、方法、变量等起的名字。

 

 6.键盘录入

Java中有个Scanner类,这个类可以接收从键盘输入的数字。

 练习:从键盘输入两个整数,并打印出两者之和。

7.IDEA

 

2.运算符

练习:从键盘输入三位数,获取其中百位、十位、个位。

  

1.隐式转换和强制转换

 2.自增自减运算符++,--

 

3.赋值运算符

 4.短路逻辑运算符

当左边表达式能确定最终结果,右边表达式就不会参与运行。

 

 5.三元运算符

 6.运算符优先级

小括号(),优先于所有。

7.原码反码补码

原码:十进制数据的二进制表现形式,最左边是符号位,0为正,1为负。

原码的弊端:利用原码计算时,如果是整数就没问题,但如果是负数,结果会出错,实际运算方向与正确运算方向相反。

 3.判断

如果对布尔类型的变量进行判断,不要用==,直接将变量写到小括号里。

 

 

 

练习:

 

 

 

 

 4.循环

 

100.fori (快速生成100以内的for循环)

练习:100范围内的偶数和(包括100)

 

 

 练习:

 

 先执行后判断

5.循环高级

 练习:

 

 

练习:猜数字小游戏,随机生成1~100的数字,使用程序实现猜出这个数字是多少?

 

注:括号内的范围是0~99,所以+1,就是1~100

import java.util.Random;
import java.util.Scanner;

public class GuessNumber {
    public static void main(String[] args) {
        Random r=new Random();
        int number= r.nextInt(100)+1;
        while (true) {
            System.out.println("请输入要猜的数字:33");
            Scanner sc=new Scanner(System.in);
            int guessunm= sc.nextInt();
            if (number > guessunm) {
                System.out.println("小了");
            } else if (number < guessunm) {
                System.out.println("大了");
            } else if (number == guessunm) {
                System.out.println("猜对了");
                break;
            }
        }
    }
}

 6.数组

 直接打印数组名,是不会出现数组中的值,而是数组的地址值。

1.获取数组元素:数组名[索引]

2.将数据存储到数组中:数组名[索引]=数据/变量  (之前的数据会被覆盖)

 数组的遍历:遍历是指取出数据的过程,而不只是简单的打印。

自动快速生成数组遍历:数组名.fori

练习:遍历数组并求和。定义一个数组,存储1,2,3,4,5,遍历得到每一个元素,并求所有元素之和。

public class ArrayText {
    public static void main(String[] args) {
        int[]array={1,2,3,4,5};
        int sum=0;
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
            sum=sum+array[i];
        }
        System.out.println(sum);
    }
}

练习:定义一个数组,存储1,2,3,4,5,6,7,8,9,10,遍历得到每一个元素,统计里面有多少个能被3整除的数字。

public class ArrayText {
    public static void main(String[] args) {
        int[]array={1,2,3,4,5,6,7,8,9,10};
        int count=0;
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
            if(array[i]%3==0){
                count++;
            }
        }
        System.out.println("能被3整除的数字有"+count+"个");
    }
}

练习:变化数据。定义一个数组,存储1,2,3,4,5,6,7,8,9,10,遍历得到每一个元素,如果是奇数,则将当前数字扩大两倍,如果是偶数,就将数字变成二分之一。

public class ArrayText {
    public static void main(String[] args) {
        int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int count = 0;
        for (int i = 0; i < array.length; i++) {
            if (array[i] % 2 != 0) {
                array[i] = array[i] * 2;
            } else if (array[i] % 2 == 0) {
                array[i] = array[i] / 2;
            }
        }
        //遍历数组
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }
    }
}

注:一个循环只做一件事情

 

练习:求最值。一直输组元素为[33,5,22,44,55] ,找出最大值并打印。

public class MaxNumber {
    public static void main(String[] args) {
        int[] arr = {33,5,22,44,55};
        int max=arr[0];
//max的初始化值一定是数组的值
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]>max){
                max=arr[i];
            }
        }
        System.out.println(max);
    }
}

练习:生成10个1~100的随机数存入数组。1.求出所有数据和;2.求出平均值;3.统计有多少个数据小于平均值。

import java.util.Random;

public class ArrTest {
    public static void main(String[] args) {
        int[]arr=new int[10];
        int sum=0;
        int count=0;
        for (int i = 0; i < 10; i++) {
            Random r=new Random();
            int num=r.nextInt(100)+1;
            arr[i]=num;
        }
        for (int i = 0; i < arr.length; i++) {
            sum=sum+arr[i];
        }
        System.out.println("所有数据和为:"+sum);
        int ave=sum/10;
        System.out.println("所有数据的平均值:"+ave);
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]<ave){
                count++;
            }
        }
        System.out.println("有"+count+"个数据比平均值小");


    }
}

练习:定义一个数组,存入1,2,3,4,5,按照要求调换索引对应元素。交换前1,2,3,4,5;交换后5,2,3,4,1。

public class ArrTest {
    public static void main(String[] args) {
        int[]arr={1,2,3,4,5};
        for (int i = 0; i < arr.length; i++) {
            int temp=arr[0];
            arr[0]=arr[4];
            arr[4]=temp;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

//1,2,3,4,5交换成5,4,3,2,1
public class ArrTest {
    public static void main(String[] args) {
        int[]arr={1,2,3,4,5};
        for (int i = 0,j= arr.length-1; i<j;i++,j--) {
            int temp=arr[i];
            arr[i]=arr[j];
            arr[j]=temp;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

练习:定义一个数组,存入1~5。要求打乱所有数据的顺序。

import java.util.Random;

public class ArrTest {
    public static void main(String[] args) {
        int[]arr={1,2,3,4,5};
        Random r=new Random();
        for (int i = 0; i < arr.length; i++) {
            int randomnum=r.nextInt(arr.length);
            int temp=arr[i];
            arr[i]=arr[randomnum];
            arr[randomnum]=temp;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

7.数组的内存图

栈:方法运行时使用的内存,比如main方法运行,进入方法栈中运行。

堆:存储对象或数组,new来创建的,都存储在堆内存。

 

8.方法

方法是程序中最小的执行单元。方法和方法是平级关系,不可嵌套。

1.最简单的方法定义, 调用方法:方法名();

2.带参数的方法,调用方法:method(数据,数据)

形参:方法定义中的参数

实参:方法调用中的参数

void就是没有返回值

3.带返回值的方法

return返回值给方法调用处 。return不带参数时,就是结束方法。

 

 方法的重载:

 在一个类中,定义了多个同名的方法,这些同名的方法具有同种功能。每个方法具有不同的参数类型或参数个数,这些同名方法,就构成了重载关系。

同一个类中,方法名相同,参数不同的方法。与返回值无关。(参数不同:个数,类型,顺序)

注:调用时可以结合数据类型强制转换。

练习:设计一个方法,求数组的最大值,并将最大值返回。

public class ArrTest {
    public static void main(String[] args) {
        int[]arr={2,4,6,3,13,15};
        int max=getmax(arr);
        System.out.println(max);
    }

    public static int getmax(int[]arr) {
        int max=arr[0];
        for (int i = 0; i < arr.length; i++) {
            if(max<arr[i]){
                max=arr[i];
            }
        }
        return max;
    }
}

练习:定义一个方法copyOfRange(int[]arr,int from,int to),将数组arr中从索引from(包含from)开始,到索引to(不包括to)结束的元素复制到新数组中,将新数组返回。

public class ArrTest {
    public static void main(String[] args) {
        int[]arr={2,4,6,3,13,15,10,9};
        int[]copy=copyOfRange(arr,3,7); //调用,用一个数组接收数据
        for (int i = 0; i < copy.length; i++) { //遍历copy数组
            System.out.print(copy[i]+" "); //用print就不会换行,println会换行
        }
    }

    public static int[] copyOfRange(int[]arr,int from,int to) {
        int[]arrnew=new int[to-from]; //定义数组
        int index=0; //伪造索引
        for (int i = from; i < to; i++) {
            arrnew[index]=arr[i]; //把原数组arr的从from到to的数据,赋值给arrnew
            index++;
        }
        return arrnew; //返回数组,数据类型要用int[]
    }
}

方法的基本内存原理:方法进栈,先进后出

什么是基本数据类型和引用数据类型?

 

 只要是new出来的,都是引用数据类型。在变量里存储的不是真实数据,而是地址值。

 

传递基本数据类型时,传递的是真实的数据,形参的改变,不改变实际参数的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值