java基础学习
学习前奏
学习视频来自B站,感谢狂神的分享:B站视频地址
阿里巴巴java开发手册
idea注释设置
要写笔记
推荐博客园,CSDN作为主要博客,编辑器尝试MarkDown(本地下载typora,写好可直接复制到CSDN),记录学习的点点滴滴,防止后期遗忘还要查看视频。MarkDown语法格式,可以在CSDN–>写博客–>使用MarkDown编辑器(右上角帮助)中查看
基本dos命令
dos命令 | 作用 |
---|---|
cd | 切换当前位置 |
dir | 列出当前位置的 文件/文件夹 |
cls | 清理控制台 |
exit | 退出控制台 |
ipconfig | 查看电脑当前ip |
notepad | 新建并打开记事本 |
mspaint | 打开画图工具 |
md / rd | 创建 / 删除 文件夹 |
cd> / del | 创建 / 删除 文件 |
netstat | -ano #查看所有端口 -ano | findstr “5900” #查看指定端口 tasklist | findstr “8696” #查看指定端口的进程 |
了解java
首先有了C语言(面向过程);后来有了C++,在C的基础上加入了面向对象的思想,但需要手动释放内存、不跨平台等;后期有了java,java有垃圾自动回收机制、更强大的类库、JVM使得java可以跨平台运行,使得迅速占领了大量市场份额。
java是编译型+解释型语言,运行初期通过 编译器 对.java文件进行编译,生成.calss文件(字节码文件);运行时加载.class,通过 “解释器” 解释一步运行一步
IDE使用 idea
java学习
----------- java基本命令 -----------
javac 编译.java 文件
javac xxx.java
java 运行.class文件
java xxx.class
javadoc 生成java文档
javadoc -encoding UTF-8 -chartset UTF-8 xxx.java
1.基本数据类型
java八大基本数据类型:byte、short、int、long、float、double、char、boolean
String 不属于基本类型,它是类
变量类型 | 大小 | 使用场景 |
---|---|---|
byte | 1字节 | 存储字节数据(较常用) -128~127 |
short | 2字节 | 兼容性考虑(很少用)-32768~32767 |
int | 4字节 | 存储普通整数(常用) (-231 ~ 231-1) |
long | 8字节 | 存储长整数(常用) (-263 ~ 263-1)需要以l或L结尾 |
float | 4字节 | 存储单精度浮点数 |
double | 8 字节 | 存储双精度浮点数(常用) |
char | 2字节 | 存储一个字符(常用) |
boolean | 1字节 | 存储逻辑变量(常用) |
2.变量
变量的作用域:
public class Variable{
static int allClicks = 0; //类变量,static 修饰
String str = "hello word"; //实例变量
public void method(){
int i = 0; //局部变量
}
}
3.常量
变量命名规则:
名称 | 折叠驼峰法 | 折叠Pascal法 |
---|---|---|
别名 | 小驼峰法 | 大驼峰法 |
使用场景 | 命名变量、属性、方法(函数) | 命名类、空间、常量 |
规则 | 除第一个单词之外,其他单词首字母大写 | 第一个单词的首字母也大写 |
举例 | int myCount; | Public class DataUser; |
4.运算符
字符串连接符:+(从字符串开始的位置进行连接;之前的部分依然进行运算)
int a = 10;
int b = 20;
System.out.println(""+a+b); //输出1020
System.out.println(a+b+""); //输出30
5.控制流程
---------------------Scanner 对象---------------------
//创建扫描器,接收控制台输入数据
Scanner scanner = new Scanner(System.in);
//判断用户有没有输入
if(scanner.hasNext() || scanner.hasNextLine()){
//读取第一个非空单词
String strNext = scanner.next();
//读取第一行
String strNextLine = scanner.nextLine();
}
//关闭扫描器
scanner.close();
1.顺序结构
除非特别指明,否则代码就按照一句一句从上往下执行。顺序结构是最简单、基本的一种算法结构。
2.选择结构
关键字:if(可嵌套) switch
//------------- if选择结构 -------------
if(布尔表达式){
System.out.println("条件为真");
}else{
System.out.println("条件为假");
}
//------------- switch选择结构 -------------
//1. switch语句中的变量类型可以是:byte、short、int、char
//2. 从java7开始,支持String类型
//3. case标签,必须为字符串常量 or 字面量
switch(expression){
case value1:
//语句1
break;
case value2:
//语句2
break;
default: //default可有可没有
//默认执行语句
}
3.循环结构
- while 循环 do while 循环 for循环
while 和 do while
//while循环,---条件为真执行循环体,先判断后执行
while(布尔表达式){
//程序语句
}
//do while ---先执行后判断,循环体至少执行一次
do{
//循环语句
}while(布尔表达式);
for循环 (可能一次都不执行) 注:java5引入了foreach写法
//可以写成for( ; ; ){},这是死循环的写法
//1.执行初始值--》判断布尔表达式--》执行循环体
//2.更新--》判断布尔表达式--》执行循环体
for(初始值 ; 布尔表达式 ; 更新){
//循环语句
}
//九九乘法表
for(int i=1 ; i<=9 ; i++){
for(int j=1 ; j<=i ; j++){
System.out.print(i+"*"+j+"*"=(i*j));
}
System.out.println();
}
//使用标签,输出100~200之间的质数(只能被1和它本身整除)
outer:for(int i=100 ; i<=200 ; i++){
for(int j=2 ; j<=i/2 ; j++){
continue:outer;
}
System.out.println(i);
}
6.方法
程序=算法+数据结构 软件=程序+数据
方法包含与对象中,是解决一类问题的步骤的有序集合。方法最好保持原子性,就是一个方法只完成一个功能。
java都是值传递?
方法的定义格式:
//修饰符 返回值类型 方法名 (参数列表){
// 方法体
//}
public static int sum(int a,int b){
return a+b;
}
1.重载
- 在同一个类中,方法名相同、参数列表不同构成重载。(与参数名、返回值类型、访问修饰符无关)
2.可变参数
//可变参数,又称为不定项参数
public void static mian(String[] args){
//两种调用方法:
printMax(1,2,3,4,5);
printMax(new double[]{1,3,5});
}
//比较大小
public static void printMax(double... numbers){
double max = numbers[0];
for(int i=0 ; i<numbers.length ; i++){
if(munbers[i] > max){
max = numbers[i];
}
}
}
3.递归
- 递归就是方法调用自身。通常用来把一个大型复杂问题,转换成一个与原问题相似但规模较小的问题。
- 递归包含两部分:递归头(什么时候结束调用);递归体(什么时候调用自身方法)
- 尽量不用递归:java的方法调用,是压栈形式。如果递归深度越大,会占用大量内存甚至内存溢出。
//递归实现阶乘
public static int f(int n){
if(n == 1){
return 1;
}else{
return n*f(n-1);
}
}
7.数组
- 数据:相同数据类型的有序集合。每个数据称为数组的元素,可以通过下标访问。
//数组声明的两种方式:
dataType[] arrayRefVar; //推荐
dataType arrayRefVar[]; //不推荐
//创建数组:
dataType[] arrayRefVar = new dataType[size];
//数组的三种初始化状态:
1.静态初始化(创建时赋值)
int[] a = {1,2,3};
2.动态初始化(先创建、后赋值)
int[] a = new int[2];
a[0] = 1 ; a[1] = 2;
3.默认初始化
数组是引用类型,他的元素相当于类的实例变量。因此数组一旦分配空间,
每个元素就会根据变量类型赋予默认值。
byte、int、short、long 默认值为0
boolean 默认值为false
float、double 默认值为0.0
char 默认值为 null
数组的特点:
- 数组一旦创建,长度就不可改变;
- 同一数组数据类型必须相同,可以是 基本类型 或者 引用类型;
- 数组变量是引用类型:数组可以看成对象,保存在堆中;数组的元素相当于类的成员变量 ( 创建数组是通过关键字 new)
- 数组工具类:java.util.Arrays,可以对数组对象做一些基本操作。
冒泡排序
public void bubbingSort(int[] intArray){
int temp = 0;
//外层循环,判断执行多少次
for(int i=0 ; i<intArray.length-1 ; i++){
boolean flag = true;//减少排序
//排序
for(int j=0 ; j<intArray.length -i-1 ; j++){
if(intArray[j] > intArray[j+1]){
temp = intArray[j];
intArray[j] = intArray[j+1];
intArray[j+1] = temp;
flag = false;
}
}
if(flag){break}
return intArray;
}
}
稀疏数组
8.面向对象
9.封装、继承、多态
封装
- 隐藏代码的具体实现;隐藏代码的实现细节;统一接口;增加系统可维护性
继承
- idea快捷键( ctrl+H,打开继承结构 )
- 通过 super ,调用父类的方法或属性
- 私有属性or方法,无法被继承
- java类是单继承,但接口可以多继承
多态
10.抽象类
11.接口
12.内部类
13.异常
异常的五个关键字
try 、catch 、finally 、throw 、throws
Throwable类是 Error 和 Exception 的父类;如果多个catch,则应从小到大开始捕获