JAVA学习第三步-java基础

JAVA


网站开发就用JAVA,目前招聘岗位最多的语言。

一 基础

1 注释

2 八种基本数据类型
2.1 小数表示近似值

3 几种运算符
3.1 单元运算符

4 if,switch和while\for循环语句

5 break和continue,
5.1break可以退出标签循环

1 输入输出

1.1 输入

1.2 输出

printin和print的区别

在这里插入图片描述

二 开发

1 工具

1.1 JDK(java开发工具包),有JDK才能开发java程序。

1.2 开发一个java程序3个步骤,

  1. 编写程序(IDEA)
  2. 编译程序(javac)
  3. 运行程序(java)

1.3 安装好JDK软件,为什么直接就能在cmd中运行javac和java命令了呢?

答:是因为把javac和java这两个exe的程序配置到电脑的环境变量中了。
在这里插入图片描述
path环境变量非常非常简单
非常简单,不懂了就看黑马程序员的那个教程(5分钟搞懂)
在这里插入图片描述

1.4 IEDE常用快捷键

在这里插入图片描述
ALT+ENTER可以实现快捷键导包;
选中方法,按ctrl, 鼠标单击就会定位到这个方法;

2 项目管理

2.11 项目-模块-包-类

同一个包中的类相互访问时,可以不使用包名,否则使用包名。
包下面可以定义包和类
包就是一个文件夹,com.heima,就是com文件夹下面有黑马文件夹

在这里插入图片描述

2.2 命名

项目名用全小写

包的命名为全小写,com.heima
类的命名为单词首字母大写
变量一般为首字母小写,之后单词首字符大写smallBird
方法,命名和变量一样
在这里插入图片描述

2.3 引用包

import com.lzw.* //引用com.lzw这个包里的所有类
import com.lzw.math //引用math类

在这里插入图片描述
1、IDEA中如何在一个工程下创建多个模块_不仅仅是个程序猿的博客-CSDN博客_idea一个项目创建多个模块步骤
https://blog.csdn.net/hh_ylf/article/details/120578780

2.4 java.class

iDEA里没执行一次,都会生成对应的.class文件,这样就可以用java虚拟机运行了。
用java虚拟机运行,不用exe,作用就是可以跨平台。

2.5 jar包(类和资源打包的压缩文件)和war包(所有项目文件的压缩文件)

jar包和war包区别及理解
https://blog.csdn.net/cjw12581/article/details/107463971

jar包完全解读
https://blog.csdn.net/qq_40493277/article/details/103733767

3 Debug调试程序

直接看黑马程序员第2天的debug基本使用就行了,3分钟就会
在这里插入图片描述

3 导包(不同包之间的类应用)

  1. 同一个包下的类可以直接调用
    因为同一个包下面的类名不可能相同;
  2. 不同包下的类不可以直接调用

itheima_01和itheima_02两个包
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三 高级数据结构

数据结构就分为两大块:

1. 值类型
2. 引用类型

1 数组

1 数组就是同一类型数据组成的连续的线性序列,变量里面存储数组的地址序列;
2 int month[]=new int[12];创建12个元素的数组,
3 初始化数组看书的73页,3种方法;
4 java支持不规则数组,比如二维数组的每行的列数不一样;
5 二维数组创建的时候必须要声明行,列可以之后声明;
6 new int[]等这种叫构造方法;用来实例化一个变量

1.1 数组的声明

int[] arr;

1.2 数组的初始化两种方式

在这里插入图片描述
在这里插入图片描述

1.3 直接输出数组名是地址

直接输出数组名,输出的是java地址
在这里插入图片描述

1.4 arr.fori可以自动写for语言

1.5 数组的内存存储方式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.6二维数组

(1)静态初始化和动态初始化
在这里插入图片描述
在这里插入图片描述
(2)二维数组的内存
在这里插入图片描述
在这里插入图片描述

2 字符串

1 字符串一旦使用String方法创建就不能更改;但是使用StringBuffer和StringBuilder创建就可以修改,他们3个的不同在书的124-125页。
在这里插入图片描述
在这里插入图片描述

2 字符串构造的4种方法看书第90页,注意区别
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3 字符串连接,+号,a.concat
4 字符串函数,跟python的一样,https://www.runoob.com/java/java-string.html
5 判断两个字符串相同不用==,要用equals函数
6 String str = null 和String str = ""是两个不同的概念,看书112页;
7 format函数格式化字符串

在这里插入图片描述
在这里插入图片描述

3 类型比较

在这里插入图片描述

4 输出数据类型(int类型名叫Integer)

int a = 10;
a.getClass().toString();
public static void main(String[] args) {
        List list = new ArrayList();
        byte by = 8;
        int it = 100;
        list.add("abc");
        list.add(123);
        list.add(new HashMap());
        list.add(by);
        list.add(it);
        System.out.println(list);
        for (int i=0; i<list.size();i++){
            System.out.println(list.get(i)+"输出数据类型:"+list.get(i).getClass().toString());
        }
    }

上面的输出结果:
在这里插入图片描述

四 类和对象

1 类(成员变量和方法2个方面构成)

类就是java用来描述对象的属性和行为的功能集合。
类是对象的抽象,对象是类的实体;
在这里插入图片描述

1.1 成员变量

编程时候成员变量基本全部都需要私有,用private修饰,想要修改它的值,在类中定义set和get方法。
在这里插入图片描述

1.2 成员方法(通用格式)

在这里插入图片描述
在这里插入图片描述

1.3 成员方法的参数

有返回值必须写返回值类型,没有就写void,构造方法不写void。所以遇到方法没有return返回值也没有加void,那这个方法一定是构造方法。

1.3.1 值参数

方法中对值类型形参的修改不影响实参

1.3.2 引用参数

比如对传递进来的数组进行修改;

1.3.3 不定长参数

就是3个…来声明,必须放在其他参数的最后面。

1.3.4 一个方法不能定义在另一个方法里面

方面不能嵌套定义,会报错

1.4 构造方法(用来创建对象)

在这里插入图片描述

在这里插入图片描述

  1. 必须和类的名字一样,每个类都有构造方法。如果没有显式地为类定义构造方法,Java
    编译器将会为该类提供一个默认构造方法(你不写也行,但是编译器会自动提供一个空的)。
  2. 在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。用来对类的变量进行初始化操作;
  3. 没有返回值,也不能加void

public class Puppy{
public Puppy(){
}

public Puppy(String name){
    // 这个构造器仅有一个参数:name
}

}

1.5 主方法

一个类只有一个主方法,程序入口
主方法是静态的,所以主方法调用其他方法时候有限制,两种方法:

  1. 直接调用静态方法,不能直接调用非静态方法;
  2. 先创建个对象,使用对象名.方法名调用

1.6 方法参数的智能提示

在这里插入图片描述

2 对象

对象的创建,对象都是引用,你的对象名指向到对象的内存地址。
每个对象都是相互独立的。每当使用一个new 就实实在在创建了一个对象。
在这里插入图片描述

2.1 this关键字

对象自身的一个引用,代表这个对象的本身,看着是类,实际上是在对象中起作用。
3个作用:书142页

  1. 明确成员变量或方法是自身的成员变量
    在这里插入图片描述

  2. 作为方法的返回值,返回自身

  3. 调用构造方法
    在这里插入图片描述

2.2 static 关键字代表静态,几个对象共享这1变量

  1. 只有把成员变量、成员方法变成静态的,该类的所有对象访问的保持不变。
  2. 静态变量就相当于一个固定的内存,每次类对这个静态变量调整是在这个内存中进行,相当于每次不同对象调用它,都调用的是一个内存。
    它很大的一个作用就是让大家共用这一个值,一个对象修改了这个值,另一个对象也可以知道这个变化。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

  1. 在这里插入图片描述
    运行结果:
    在这里插入图片描述
    4 不定义为静态变量
    在这里插入图片描述
    在这里插入图片描述

2.3 final static修饰一个成员变量,就变成一个静态常量

比如多个类共用一个常量时,只需要在一个类中定义。
这里搞不懂的是不加final static也可以呀,直接类名.变量名不就可以应用别的类中的这个变量吗?

3 继承

3.1 extends进行继承

Java的类只支持单继承
不明确表示继承哪个父类,就自动继承Object类

3.2 重写(覆盖)

子类不改变父类方法名,进行方法的重写。

3.3 重载

它和重写定义不一样
重载是同一个类中允许同时存在多个名字一样的方法名,但是它们的参数个数或者类型不同,调用的时候根据输入参数不同直接可以找到对应的方法运行。
而重写是子类重写父类
在这里插入图片描述

3.4 super(代表父类对象)

和this相对比,this指代本类对象,super指代这个类的父类对象
构造方法中使用了super,那其他初始化代码之鞥呢

3.5 子类对象是父类实例

子类对象可以是父类的实例,实际上就是一个显式的类型转换

4 各种类

4.1 抽象类abstract(不能实例化)

它的意义是比较抽象,还没具体,主要用来当做其他类的父类,除了被继承外没有任何意义。

4.2 抽象方法(没有任何实现内容)

它存在的意义就是被继承类重写
包含抽象方法的类必须定义为抽象类,但是抽象类可以不定义抽象方法;

4.3 接口interface(最纯粹的抽象类,用来实现多继承)

接口就是抽象类,它是抽象类中最特殊的。接口中的所有方法都是抽象方法。
接口中定义的变量默认都是final static ,就是不能修改。
接口和抽象类的区别,书174页

4.4 访问控制(public,private,包,类,finall)

public 、protected、default(缺省默认)、private
对类,成员方法,成员变量不加限制,默认为default限制
类的权限设定决定类成员的权限,类权限为default,类成员最高只能为这个,虽然类成员可以写public,,但是不起作用。

在这里插入图片描述
private修饰了成员变量以后,其他类中不能直接调用,但是可以在private的成员变量所属的类中,定义set和get方法
如果被private修饰,那别的类不能访问,需要用get和set方法
在这里插入图片描述

4.5 JavaBean类

在这里插入图片描述

4.5 finall(最终版,不能更改了)

finall限定的类不能被继承
finall限定的方法不能被子类重写
finall限定的变量不能被修改,相当于变成常量了,所以在声明时就要进行赋值。
只用finall修饰的变量实际上还是可以被修改的,如果就不想被修改,用public static finall
上面的public限制外界访问权限
== static限制内存的一块区域==
fianll限制方法或类、变量能不能被修改
在这里插入图片描述
在这里插入图片描述

五 装箱和拆箱

装箱和拆箱
在这里插入图片描述

六 内存分配

在这里插入图片描述

在这里插入图片描述

1 单个对象内存管理

在这里插入图片描述

2 多个对象内存管理

在这里插入图片描述

3 多个引用指向同一地址

在这里插入图片描述

参考资料

[1] 黑马程序员的教程,特别好
[2] Java 变量类型 | 菜鸟教程
https://www.runoob.com/java/java-variable-types.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓码bigdata

如果文章给您带来帮助,感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值