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]);
}
}
}
本文围绕Java数组原理及内存存储展开。介绍了JVM运行程序时对内存空间的划分,包括寄存器、本地方法栈、方法区、堆内存和方法栈。重点阐述了数组在堆内存中的存储方式,通过示例程序展示了数组创建及执行步骤,如默认赋值、地址值传递等。
296

被折叠的 条评论
为什么被折叠?



