java笔记一Java基础语法

本文围绕Java数组原理及内存存储展开。介绍了JVM运行程序时对内存空间的划分,包括寄存器、本地方法栈、方法区、堆内存和方法栈。重点阐述了数组在堆内存中的存储方式,通过示例程序展示了数组创建及执行步骤,如默认赋值、地址值传递等。
package day01code;
public class demo01 {
    /*day01【前言、入门程序、常量、变量】
     *Java语言开发环境搭建
     * Java虚拟机——JVM(Java Virtual Machine),我们所有的程序都在JVM上运行
     * JRE (Java Runtime Environment) :是Java程序的运行时环境,包含JVM 和运行时所需要的核心类库 。
     * JDK (Java Development Kit):是Java程序开发工具包,包含JRE和开发人员使用的工具。*/
    public static void main(String[] args) {
        System.out.println("HelloWorld!");
    }
    /*文件名必须与类名一致,注意大小写
    * 编译:是指将我们编写的Java源文件翻译成JVM认识的class文件,在这个过程中, javac 编译器会检查我们
    * 所写的程序是否有错误,有错误就会提示出来,如果没有错误就会编译成功。
    * 运行:是指将class文件 交给JVM去运行,此时JVM就会去执行我们编写的程序了。
    * main方法是主方法*/
}
    /*数据类型
    * 基本数据类型:int float char boolean
    * 引用数据类型:类,数组,接口*/
package day01code;
public class Demo01Variable {
    public static void main(String[] args) {
//一、命名规范
//1、 项目名全部小写 untitle
//2、 包名全部小写   day01code
//3、 类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写。 Demo01Variable
//4、 变量名、方法名首字母小写,如果名称由多个单词组成,每个单词的首字母都要大写。       public void toString(){}
//5、 常量名全部大写 如:public static final String GAME_COLOR=”RED”;
        byte b = 100;
        System.out.println(b);
        /*day02 【数据类型转换、运算符、方法入门】*/
        int i = 1;
        byte c = 2;
        int j = i + c;
        //int 为四个字节,c为一个字节,在相加时c会自动提升为int类型,自动补充3个字节,计算过后还是int型
        int d = (int)1.5;
        System.out.println(d);
    }
}
package day01code;

public class Demo03Method {
    /*方法:就是将一个功能抽取出来,把代码定义在一个大括号内,形成一个单独的功能
    * 需要功能时再去调用,这样即实现了代码的复用性,也解决了代码冗余的现象
    * 方法的定义:修饰符 返回值类型 方法名 (参数列表)
    * 方法的调用*/

    public static void methodName(){
        System.out.println("这是一个方法");
    }

    public static void print(){
        /*从0开始循环5次
        * 从1开始循环4次
        * 小于号后面的减去等号后面的就是循环次数
        * 外循环执行5次内循环执行8次*/
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 8; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }

    public static void main(String[] args) {
        methodName();
        print();
    }
}

/*什么是IDEA
* 针对JAVA的集成开发工具,由JAVA语言编写。所以,需要有JRE运行环境并配置好环境变量
* 一些常用的快捷键
Alt+Enter 导入包,自动修正代码
Ctrl+Y 删除光标所在行
Ctrl+D 复制光标所在行的内容,插入光标位置下面
Ctrl+Alt+L 格式化代码
Ctrl+/ 单行注释
Ctrl+Shift+/ 选中代码注释,多行注释,再按取消注释
Alt+Ins 自动生成代码,toString,get,set等方法
Alt+Shift+上下箭头移动当前代码行
*
* 如何定义一个方法
* 修饰符 返回值类型 方法名(参数列表){
*           中间写代码
*           return 结果
* }
*
* 定义方法最重要的两个东西:参数列表和结果
* 参数列表就是输入是什么
* 结果就是输出是什么
*
* 调用方法的三种形式:直接调用
*                    赋值调用
*                    输出语句调用
* */
package day01code;

public class Demo05ArrayList {
    /*如何定义一个数组
    * 什么是数组:容器,存储数据长度固定的容器,保证容器中的数据类型要一致
    * 如何定义:
    * 数组存储的数据类型[] 数组名称 = new 数组存储的数据类型[长度]
    * 注释:[] 表示数组*/
    int[] arr = new int[5]; //定义一个长度为5的整形数组容器
    /*还可以怎么定义呢?
    * 数据类型[] 数组名称 = new 数据类型[]{直接赋值}
    * 注释:第二个中括号不要写长度*/
    int[] arr1 = new int[]{1,2,3,4,5};
    /*还可以怎么定义呢?
    * 数据类型[] 数组名称 = {直接赋值}*/
    int[] arr2 = {1,2,3,4,5};

    /*定义完了数组,如何进行访问呢?
    * 索引:每次存放了一个数组元素进去,都会自动赋值一个编号,叫做数组索引(index)
    * 数组名[索引]
    * 例子:      arr[0]  访问arr数组中的第一个元素
    * 数组的长度   arr.length
    */
    public static void main(String[] args) {
        int[] arr3 = {1,2,3,4,5};
        System.out.println(arr3[0]);
    }
}

数组原理内存图
内存是临时存储区域,作用是运行程序,编写的程序是在硬盘中,必须放在内存中才会运行,运行完之后会清空内存
JVM要运行程序,就必须对内存空间进行分配和管理

那么如何划分呢?
区域名称 作用
寄存器 给CPU使用,和我们开发无关。
本地方法栈 JVM在使用操作系统功能的时候使用,和我们开发无关。
方法区 存储可以运行的class文件。
堆内存 存储对象或者数组,new来创建的,都存储在堆内存。
方法栈 方法运行时使用的内存,比如main方法运行,进入方法栈中执行。

比如创建一个数组,数组在内存中怎么存储的呢?
int[] arr = new int[3]
数组一定是一个new出来的东西,new出来的东西都是在堆内存中存储,变量名arr保存的是数组的地址值
System.out.println(arr) 输出的是数组arr的地址值
System.out.println(arr[0]) 输出的是arr保存地址中数组中0索引上的元素

给了一段程序,程序是如何执行的呢?
public static void main(String[] args) {
int[] arr = new int[3];
System.out.println(arr);//[I@5f150435
}
分成如下几个步骤:
1.main方法进入方法栈执行
2.创建数组,JVM会在堆内存中开辟空间,存储数组
3.数组会有自己的内存地址,用十六进制数保存
4.如果没有赋值的话,系统会默认赋值0,也就是默认值为0
5.JVM会把地址值赋值给引用类型变量arr
6.变量arr保存的是数组内容中的地址,而不是一个具体的值,所以叫做引用数据类型

package day01code;

/*1.补充一个for循环的知识点
 * for(初始化表达式;布尔表达式;步进表达式){
 *   循环体
 * }
 * 2.只要一听到交换两个字,立马想到中间变量temp*/
public class Demo06ArrayTraversal {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
        /*数组的遍历,注意从0开始就是length-1*/
        for (int i = 0; i < arr.length - 1; i++) {
            System.out.print(arr[i]);
        }
        /*数组的最大值
         * 输入:一个整形数组
         * 输出:数组中的最大值
         * 步骤:
         * 1.假设第一个是最大值,怎么取?用索引取出数据
         * 2.遍历数组,取出所有的值
         * 3.比较大小,变量更新较大的值
         */
        int max1 = arr[0];
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] > max1)
                max1 = arr[i];
        }
        /*数组的反转
         *输入:一个整形数组
         *输出:索引交换后的数组
         *什么叫反转?    数组最大值的索引对应的值和最小值的索引对应的值交换就叫反转
         *每次交换过后,索引要跟着一起变化,再次交换*/
        
        int[] arr2 = {1,2,3,4,5};

        for (int min = 0, max = arr2.length-1; min <= max; min++, max--) {
            int temp = arr[min];
            arr2[min] = arr2[max];
            arr2[max] = temp;
        }
        for (int i = 0; i < arr2.length; i++) {
            System.out.print(arr2[i]);
        }
    }
}

package day01code;

public class Demo07ReturnArraylist {
    /*数组作为方法参数和返回值
     * 翻译:输入是一个数组,输出也是一个数据*/
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
        printArray(arr);
    }
    public static void printArray(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]);
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值