该博客仅作为作者本人学习Java的笔记,保证正确性,但不保证每个知识点都具备,接下来从命令行窗口的快捷键说起:
命令行窗口常用命令:
1.盘符(去哪个盘进行操作):D:
2.查看当前路径下文件信息:dir
3.进入目录:cd 目录名(按tab键补全)
返回上目录:cd..
返回根目录:cd\
4.清屏:cls
每个Java初学者的最初一段路都或许是在网上下载jdk,去win+r输cmd找命令行窗口看jdk是否安装完全,之后进行环境变量的安装,再之后就下载一个开发集成环境——IDEA,就可以开始自己的学习之路了。
接下来就可以说一说IDEA的便捷之处吧,先把我目前所学的快捷键列一下:
IDEA常用快捷键:
main/psvm、sout...... 快速键入相关代码
ctrl+d复制当前行到下一行
ctrl+x剪切当前行
ctrl+alt+l格式化代码
alt+shift+↑/↓上下移动当前代码
注释快捷键:
ctrl+/ 对当前行进行注释
ctrl+shift+/ 对选中的多行代码进行多行注释
java当中的输入和c++当中的输入功能不太一样,
java需要在main方法前写该语句:
导包:import java.util.Scanner;
使用时:
Scanner sc=new Scanner(System.in);(这段语句看着挺复杂,其实就是运用了对象的知识,下一篇博客会讲jav中对象的知识。)
int ***=sc.nextInt();(输入功能);
随机数如何去求?
用随机数Random类
①导包:import java.util.Random;
②定义对象:Random r=new Random();
③获取随机数:int number =r.nextInt(n);
生成n个随机数,为0到n-1的数;
因为作者之前学过c++,因此只讲一下java当中与c++不一样的地方,,数组之前的部分如基础语法,运算符,各种结构都和c++一样,便不再赘述。
数组部分:
for(int i=0;i<age.length;i++)
可以做到不用看数组长度直接进行数组遍历,非常方便。
注意:若这里写了"i<=age.length",此时运行编译器不会warning,
但运行会输出不了遍历结果,原因是循环中的i最终循环到了age.length的值,
导致数组长度比i小,无法输出数组遍历结果。
循环数组快捷录入:***.fori
数组错误案例:
可以看到上述错误示范都有编译器报错, 第一个是数组长度和输出指示长度不匹配,第二个是数组为空,输出啥都报错了。
接下来写一个例题,运用键盘录入,随机数,以及数组的知识,进行一个操作,要求:
输入:五个整数;
输出:打乱排序后的五个整数;
import java.util.Scanner;
import java.util.Random;
public class suijishu {
public static void main(String[] args) {
int[]codes=new int[5];
for (int i = 0; i < codes.length; i++) {
System.out.println("请您输入第"+(i+1)+"个数");
Scanner sc=new Scanner(System.in);
int code=sc.nextInt();
codes[i]=code;
}
Random a=new Random();
for (int i = 0; i < codes.length; i++) {
int index =a.nextInt(5);
int temp;
temp=codes[index];
codes[index]=codes[i];
codes[i]=temp;
}
for (int i = 0; i < codes.length; i++) {
System.out.println(codes[i]+"\t");
}
}
}
再用数组实现一个基础算法——冒泡排序:
public class bubble {
public static void main(String[] args) {
int[]arr={5,9,3,1,2};
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length-i-1; j++) {
if(arr[j]<arr[j+1]){
int temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]+"\t");
}
}
}
很简单,看过一遍代码后发现,这个嵌套循环实现了把数组中的五个值从大到小排序了,这便是基础的bubble排序。
java内存分配:
栈:方法运行时进入的内存,变量也是在这里;
堆:new出来的对象会在这块内存中开辟空间并产生地址;
方法区:字节码文件加载时进入的内存,即编译后的class文件;
如下图所示:
堆内存中数组的地址给栈中的量,赋的值再从arr中的地址找到堆内存中的数组进行访问,
最后输出时还是和上述相同。
两个变量指向同一个数组:
方法部分:
和c++中的函数知识基本一模一样,但c++有指针传递,java没有;
方法定义的完整格式:
方法修饰符-返回值类型-方法名称-形参列表
eg:
public static int add(int a,int b)
{
int c=a+b;
return c;
}
如何实现该方法?——
在主函数中调用:
int r=add(100,200);
输出:sout(r)
另一种无返回值类型方法写法:
public static void 方法名()
在主函数中调用:
方法名();
方法的内存调用流程:
方法没有被调用时,在方法区的字节码文件中存放;
方法被调用的时候,需要进入到栈中运行;
方法的参数传递机制:
值传递:不改变实参的值;
引用传递:形参直接搞到实参的地址,要改一起改。
方法名(int[] arr)
方法重载:方法名相同,形参列表不同;
编译器不会分不出,会根据形参列表来判断是哪个方法被调用;
return可以在方法中直接跳出并立即结束所在方法的执行,可以避免bug出现。
到目前为止,java的类之前的知识差不多说完了,下个博客将会讲述java的类以及之后的知识点