本篇文章是根据视频学的,来源如下所示:
教程来源: | java基础到高级_零基础自学Java–尚硅谷–宋红康 |
教程视频地址: | java基础到高级_零基础自学Java--尚硅谷--宋红康_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1ny4y1Y7CW |
目录
1.HelloWorld程序的编写和执行
- 这里应当注意:main的出现-main-alt+/
package com.atguigu.contact;//类来自于哪个包下面的
public class HelloWorld
{
public static void main(String[] args)
{
System.out.println("HellloWorld!");
}
}
2.Eclipse使用的常见问题1
- 导入工程注意其中的重名的现象.
- 如何导入一个源文件------复制,粘贴
- 乱码现象的出现:GBK---UTF-8
3.Eclipse使用的常见问题2
- 进入一个定义之中,使用ctrl+点击的操作才可以.
- 快速查找使用ctrl+o结合使用.
- 添加一个作者 window-Preferences-Java-CodeStyle-CodeTemplate-Comments-Types(双击)
/**
*@Description
*@author sky Email:ASDYangshuo@163.com
*@version
*@date ${date}${time}
*/
- Method
/**
*@Description
*@author sky
*@date ${date}${time}
*${tags}
*/
- 效果图
package com.atguigu.contact;
/**
*
*@Description 这是我的第一个程序
*@author sky Email:ASDYangshuo@163.com
*@version v1.0
*@date 2021年10月7日上午12:12:04
*/
public class HelloWorld
{
/**
*
*@Description 这是我的第一个项目
*@author sky
*@date 2021年10月7日上午12:12:48
*@param args
*/
public static void main(String[] args)
{
System.out.println("这是我的第一个项目!");
}
}
4.数组的概述
/*
* 一.数组:是多个相同类型数据按一定的顺序排列的集合,并使用一个名字命名,并且通过编号对这些数据进行统一管理.
*
* 二.数组相关的概念
* >数组名
* >元素
* >脚标 下标 索引
* >数组的长度
*
* 三.数组的特点:
* 1)数组是有序排列的
* 2)数组属于引用数据类型变量,数组的元素既可以是基本数据类型也可以是引用数据类型
* 3)创建数组对象会在内存之中开辟一块连续的空间
* 4)数组的长度一旦确定,就不能够修改.
*
* 四.数组的分类
* (1)按照维数:一维数组 二维数组
* (2)按照数组元素的基本类型:基本数据类型元素的数组 引用数据类型元素的数组
*/
5.一维数组的初始化
- ctrl + / 是单行注释(博主的没有成功)
- ctrl + shift + / 是多行注释(博主没有尝试成功)
package com.atguigu.java;
/*
* 一.数组:是多个相同类型数据按一定的顺序排列的集合,并使用一个名字命名,并且通过编号对这些数据进行统一管理.
*
* 二.数组相关的概念
* >数组名
* >元素
* >脚标 下标 索引
* >数组的长度
*
* 三.数组的特点:
* 1)数组是有序排列的
* 2)数组属于引用数据类型变量,数组的元素既可以是基本数据类型也可以是引用数据类型
* 3)创建数组对象会在内存之中开辟一块连续的空间
* 4)数组的长度一旦确定,就不能够修改.
*
* 四.数组的分类
* (1)按照维数:一维数组 二维数组
* (2)按照数组元素的基本类型:基本数据类型元素的数组 引用数据类型元素的数组
*
* 五.一维数组的使用
* (1)一位数组的声明和初始化
* (2)如何调用数组指定位置的元素
* (3)如何获取数组的长度
* (4)如何遍历数组
* (5)数字元素的默认初始化值
* (6)数组的内存解析
*/
public class ArrayTest {
public static void main(String[] args)
{
//(1)一位数组的声明和初始化
int num;//声明
num = 10;//初始化
int id = 1001;//声明与初始化
int[] ids;//声明
//1.1静态初始化:数组的初始化和数组元素的初始化同时进行
ids = new int[]{1001,1002,1003,1004};
//1.2动态初始化:数组的初始化和数组元素的初始化分开进行
String[] names = new String[5];
/*
//错误的写法:
int[] arr1 = new int[];
int[5] arr1 = new int[5];
int[] arr3 = new int[3]{1,2,3};
*/
//数组一旦初始化之后,它的长度就确定了
//也是正确的写法(后面会提到)
int[] arr8 = {1,2,3,3,4,4,5};//类型推断
//2.如何调用数组指定位置的元素:通过角标调用
//数组的角标(或者索引)从0开始,到数组的长度-1结束.
names[0] = "杨树";
names[1] = "小钱";
names[2] = "小候";
names[3] = "小杨";
names[4] = "小王";//charAt(0);获取小
//names[5] = "内存chucuole";数组角标超了范围
//3.如何获取数组的长度.属性:length
System.out.println(names.length);
System.out.println(ids.length);
//4.数组的遍历
for(int i = 0;i <= names.length-1;i++)
{
System.out.println(names[i]);
}
}
}
6.数组元素的默认初始化值
package com.atguigu.java;
/*
* 五.一维数组的使用
* (1)一维数组的声明和初始化
* (2)如何调用数组指定位置的元素
* (3)如何获取数组的长度
* (4)如何遍历数组
* (5)数字元素的默认初始化值 :见ArrayTest1.java
* >数组元素是整型:0 int short byte
* >数组元素是浮点型:0.0
* >数组元素是char类型:0或者'\u0000'
* >数组元素是boolean类型:false
*
* >数组元素是引用数据类型:null不是"null"
* (6)数组的内存解析 :见ArrayTest1.java
*/
public class ArrayTest1 {
public static void main(String[] args)
{
//5.数组元素的默认初始化值
int[] arr = new int[4];
for(int i = 0;i < arr.length;i++)
{
System.out.println(arr[i]);//0000
}
System.out.println("**********************");
short[] arr1 = new short[4];
for(int i = 0;i < arr1.length;i++)
{
System.out.println(arr1[i]);//0000
}
System.out.println("**********************");
float[] arr2 = new float[4];
for(int i = 0;i < arr2.length;i++)
{
System.out.println(arr2[i]);//0.0 0.0 0.0 0.0
}
System.out.println("**********************");
char[] arr3 = new char[4];
for(int i = 0;i < arr3.length;i++)
{
System.out.println("----------" + arr3[i] + "----------");//---------------- --------
}
if(arr3[0] == 0)
{
System.out.println("你好呀!");//说明arr3[0]是0
}
System.out.println("**********************");
boolean[] arr4 = new boolean[4];
for(int i = 0;i < arr4.length;i++)
{
System.out.println("----------" + arr4[i] + "----------");//----------------false--------
}
//引用数据类型
String[] arr5 = new String[5];
System.out.println(arr5[0]);
if(arr5[0] == null)
{
System.out.println("天津的天气不错啊!");
}
}
}
7.内存结构的简单说明
8.一维数组的内存解析
9.一维数组的课后练习题1
- 调整格式:source-Foramt(ctrl + shift + F )
package com.atguigu.exer;
/*
* 升景坊单间短期出租4个月,550元/月(水电煤公摊,网费35元/月),空调、卫生间、厨房齐全。
* 屋内均是IT行业人士,喜欢安静。所以要求来租者最好是同行或者刚毕业的年轻人,爱干净、安静。
*/
public class ArrayDemo
{
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);
}
}
- 输出:联系方式:18013820100
10.一维数组的课后练习2
- 进行导包处理:ctrl+shift+o或者点击相应的函数位置再或者直接输入进行导包处理
- shift+enter直接换到下一行,ctrl+shift+enter直接换到上一行
package com.atguigu.exer;
import java.util.Scanner;
//import java.util.Scanner;
/*
* 2. 从键盘读入学生成绩,找出最高分,
并输出学生成绩等级。
成绩>=最高分-10 等级为’A’
成绩>=最高分-20 等级为’B’
成绩>=最高分-30 等级为’C’
其余 等级为’D’
提示:先读入学生人数,根据人数创建int数组,
存放学生成绩。
*/
public class Array {
public static void main(String[] args) {
//1.使用Scanner,读取学生的个数
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学生的人数:");
int number = scanner.nextInt();
//2.创建数组,存储学生的成绩:动态初始化
int[] scores = new int[number];
//3.给数组元素进行赋值操作
System.out.println("请输入成绩");
for(int i = 0;i < number;i++)
{
scores[i] = scanner.nextInt();
}
//4.获取数组元素之中的最大值:最高分
int max = scores[0];
for(int j = 0;j < number;j++)
{
if(scores[j] > max)
{
max = scores[j];
}
}
//5.根据每个学生的成绩与最高分之间的差值,得到每个学生的等级,并输出等级和成绩
char level;
for(int i = 0;i <scores.length;i++)
{
if(max - scores[i] <= 10)
{
level = 'A';
}
else if(max - scores[i] <= 20)
{
level = 'B';
}
else if(max - scores[i] <= 30)
{
level = 'C';
}
else
{
level = 'D';
}
System.out.println("student " + i + " score is "+ scores[i]+" grade is "+ level);
}
}
}
11.二维数组的理解和初始化
12.二维数组元素的调用
13.二维数组的长度和遍历
package com.atguigu.java;
/*
* 二维数组的使用
*
* 1.理解
* 对于二维数组的理解,我们可以看成是一维数组array1又作为另一个一维数组array2的元素而存在。
* 其实,从数组底层的运行机制来看,其实没有多维数组。
*
* 2. 二维数组的使用
* (1)二维数组的声明和初始化
* (2)如何调用数组指定位置的元素
* (3)如何获取数组的长度
* (4)如何遍历数组
* (5)数字元素的默认初始化值(在下一节之中写了)
* (6)数组的内存解析 (在下一节之中写了)
*/
public class ArrayTest2 {
public static void main(String[] args) {
//1.一维数组的声明和初始化
int[] arr = new int[]{1,2,3};//一维数组
//静态初始化
int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};
//动态初始化
String[][] arr2 = new String[3][2];//这里可以理解成三行两列
String[][] arr3 = new String[3][];
//错误的情况
//String[][] arr4 = new String[][4];
//String[4][3] arr4 = new String[][];
//int[][] arr1 = new int[4][3]{{1,2,3},{4,5},{6,7,8}};
//正确的写法
int []arr4[] = new int[][]{{1,2,3},{4,5},{6,7,8}};
int[] arr5[] = {{1,2,3},{4,5},{6,7,8}};//类型推断
//2.如何调用指定位置的数组元素
System.out.println(arr1[0][1]);//2
System.out.println(arr2[1][1]);//null
//System.out.println(arr3[1][0]);//报错:空指针异常如果指定了相应的arr3[1],那么则不会报错
//改为如下不会报错
arr3[1] = new String[4];
System.out.println(arr3[1][0]);
//3.获取数组的长度
System.out.println(arr4.length);//3 指的第一个一维数组
System.out.println(arr4[0].length);//3
System.out.println(arr4[1].length);//4
//4.如何遍历二维数组
for(int i = 0;i < arr4.length;i++)
{
for(int j = 0;j < arr4[i].length;j++)
{
System.out.println(arr4[i][j] + " ");
}
}
}
}
14.二维数组元素默认初始化值
package com.atguigu.java;
/*
* 2. 二维数组的使用:二维数组分为外层数组的元素,内层数组的元素
* int[][] arr = new int[4][3];
* 外层元素:arr[0] arr[1]等
* 内层元素:arr[0][0] arr[1][1]
* (1)二维数组的声明和初始化
* (2)如何调用数组指定位置的元素
* (3)如何获取数组的长度
* (4)如何遍历数组
* (5)数字元素的默认初始化值 (本节内容)
* 针对初始化方式一:比如 int[][] arr = new int[4][3];
* 外层元素初始化值为:地址值
* 内层元素初始化值为:与一维数组元素初始化情况相同
* 针对初始化方式二:比如int[][] arr = new int[4][]
* 外层元素初始化值为:null
* 外层元素初始化值为:不能调用,否则出错
* (6)数组的内存解析 (本节内容)
*/
public class ArrayTest3 {
public static void main(String[] args) {
int[][] arr = new int[4][3];
System.out.println(arr[0]);//[I@15db9742 表示一维数组的地址值
System.out.println(arr[0][0]);//0
System.out.println(arr);//[[I@6d06d69c 表示二维数组的地址值
float[][] arr1 = new float[4][3];
System.out.println(arr1[0]);//[F@7852e922 表示一维数组的地址值
System.out.println(arr1[0][0]);//0.0
System.out.println(arr1);//[[F@4e25154f 表示二维数组的地址值
String[][] arr2 = new String[4][3];
System.out.println(arr2[0]);//[Ljava.lang.String;@70dea4e 表示一维数组的地址值
System.out.println(arr2[0][0]);//null
System.out.println(arr2);//[[Ljava.lang.String;@5c647e05 表示二维数组的地址值
String[][] arr3 = new String[4][];
System.out.println(arr3[0]);//null
//System.out.println(arr3[0][0]);//空指针异常
System.out.println(arr3);//[[Ljava.lang.String;@33909752 表示二维数组的地址值
}
}
15.二维数组的内存解析
16.每日一考
- 写出一维数组初始化的两种方式
答:int[] arr = new int[5];//动态初始化
String[] arr1 = new String[]{"yang","qian","hou","wang"};//静态初始化
数组一旦初始化,其长度是确定的,并且长度是不可修改的
- 写出二维数组初始化的两种方式
答:int[][] arr = new int[4][3];//动态初始化
int[][] arr1 = new int[4][];//动态初始化
int[][] arr = new int[][]{{1,2,3},{4,2,5,6,3,4}};
- 如何遍历如下的二维数组:int[] arr = new int[][]{{1,2,3},{4,5},{6,7,8}};
答:for(int i = 0;i < arr.length;i++)
{ for(int j = 0;j < arr[i].length;j++)
{ System.out.println(arr[i][j]);
}
}
- 不同类型的一维数组元素的默认初始化值各是多少
答:int short byte是0;浮点型是0.0;char:0;boolean:false;引用类型:null
- 一维数组的内存解析:
String[] strs = new String[5];
strs[2] = “Tom”;
strs = new String[3];(过程如下图所示)