A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小石姐姐 于 2017-12-7 15:03 编辑

Java基础介绍
Java语言的公司
创始人: 詹姆斯高斯林
后由SUN公司维护
        2009年04月20日, Oracle(甲骨文)收购SUN, 现在Java属于甲骨文公司
        Java版本:
        JDK 1.0
        JDK 1.1
JDK 1.2(将Java分成了J2SE, J2EE, J2ME)
J2SE 1.3
        J2SE 1.4
        JDK 1.5(改名为JavaSE, JavaEE, JavaME)
        JavaSE 6.0
        JavaSE 7.0
        JavaSE 8.0o        JavaSE 9.0 (2017-9-21)
        Java语言平台版本:
        JavaSE: Standard Edition标准版本. 开发桌面软件
        JavaME: Micro Edition嵌入式版本. 开发机顶盒, 手机等嵌入式设备的程序
JavaEE: Enterprise Edition企业版本. 开发服务器程序
Java包括JVM, JRE, JDK
Eclipse的概述和安装
        IDE: Integrated Development Environment, 集成开发环境
        集成了代码编写, 代码分析, 编译, 调试等功能的开发软件
        下载和安装:
        官网下载: https://eclipse.org/ide/
        安装: 压缩包解压
        常见启动错误:
        A java Runtime Environment (JRE) or Java Development Kit (JDK) must be available in order to run Eclipse. No Java virtual machine was found after searching the following locations:...
        运行Eclipse需要依靠JRE或JDK, 需要将JDK的bin目录配置到Path环境变量中
        Failed to load the JNI shared library "...".
        JDK和Eclipse安装的版本不一致, 要么都安装32位, 要么都64位
        
        
        JDK和Eclipse安装的版本不一致, 要么都安装32位, 要么都64位
Eclipse的基本使用
        运行环境: 需要JRE
        workspace: 工作空间, 存放项目代码的地方
        设置工作空间的所在目录:
        在开启Eclipse时出现的Select a workspace窗口, 点击Browse按钮选择目录
        设置为默认的工作空间:
        Select a workspace窗口勾选下方的Use this as the default and do not ask again(使用该路径作为默认工作空间并且不再询问)
        如果勾选了, 下次打开Eclipse不会再出现选择工作空间的窗口
        什么叫切换工作空间:
        也就是设置一个新的目录作为workspace.
        注意: 如果切换了工作空间, 那么之前的Eclipse设置也会恢复默认
        窗口区域:
        项目导航区
        代码编辑区
        调试工具区
        基本使用:
       创建Java项目的2种方式:
1.        菜单栏点击File > New > Project > Java Project
2.        在项目导航区右键 > New > Project > Java Project
        填写项目信息:
        在Project name中填写项目名称 > Finish
        弹窗: 是否打开Java视图? Yes!
        先创建包:
        右键点击src > New > Package
        在Name中填写包名 > Finish
        再创建类:
        右键点击包名 > New > Class
        在Name中填写类名 > Finish
        保存和编译: 编写完类的代码后, 按Ctrl + s保存, 此时Eclipse会自动编译该类, 生成字节码文件
        运行: 在要运行的类中, 右键点击代码区的空白处 > Run As > Java Application
        查看控制台输出: 此时会出现控制台, 出现打印语句
算术运算符的基本用法
        运算符:
        用于对常量和变量进行操作的符号•        表达式:
        用运算符链接起来的, 符合Java语法的式子.
        不同的运算符链接的表达式是不同类型的表达式
        5种运算符:
1.        算数运算符
        +: 加
        -: 减
        *: 乘
        /: 除 (整数相除结果是整数, 有浮点数参与运算, 结果才为浮点数) 除法: 4 / 3 商1 余1
        %: 取余
        ++: 自增1
        --: 自减1
2.        赋值运算符
3.        关系运算符
4.        逻辑运算符
5.        三元运算符
顺序结构的基本使用
•        流程控制语句分类:
1.        顺序结构
2.        选择结构
3.        循环结构
顺序结构
        顺序结构是最基本的流程
        顺序结构的特点: 从上往下依次进行
选择结构
if语句
if语句的基本使用

        选择结构:
        也被称为分支结构
        选择结构有2种:
1.        if语句
2.        switch语句
循环控制语句
        循环语句: 在满足循环条件的情况下, 反复执行某段代码.
        循环体: 这段被重复执行的代码
循环的停止: 在合适的时候将循环判断条件修改为false, 从而结束循环. 否则循环将一直执行下去, 形成死循环
循环语句的组成
        初始化语句: 一条语句(一条语句可以初始化多个变量), 这些语句完成一些初始化操作
        判断条件语句: boolean表达式, 这个表达式能决定是否执行循环体
        循环体语句: 要重复做的事情
        控制条件语句: 控制循环结束
        3种循环结构语句
1.        for循环
2.        while循环
        do...w Random类
作用: 生成一个随机数
        步骤:
        导包: import java.util.Random;
        创建对象: Random r = new Random();
        生成随机数: int n = r.nextInt(10);, 获取0到9的随机数(0到10, 包含0不包含10)
        数组
o        一维数组
        数组概念: 存储同一种数据类型的多个元素的容器
        定义:
        数据类型[] 数组名;, 推荐
        数据类型 数组名[];
        初始化
        动态初始化: 我们给定数组长度, 由系统给定元素的初始值
        格式: 数据类型[] 数组名 = new 数据类型[数组长度];
        示例: int[] arr = new int[3];
        静态初始化: 我们给定元素的初始值, 由系统给定数组长度
        格式:
        普通格式: 数据类型[] 数组名 = new 数据类型[]{元素1, 元素2, ...};
        示例: int[] arr = new int[]{1, 2, 3};
        简化格式: 数据类型[] 数组名 = {元素1, 元素2, ...};
        示例: int[] arr = {1,2,3};
        数组的长度
        什么是长度? 数组中元素的个数
        数组名.length: length是属性, 获取数组的长度
        数组中元素的默认值
        int: 0
        float, double: 0.0
        char: \u0000
        boolean: false
        引用类型: null
        数组元素的访问
        格式: 数组名[索引]
        数组的索引: 元素的编号, 从0开始
        数组的遍历
        什么叫做遍历: 依次获取数组中的所有元素
        如何遍历? for循环实现
o        二维数组
        什么是二维数组: 元素为一维数组的数组
        定义
        数据类型[][] 数组名;, 推荐
        数据类型[] 数组名[];
        数据类型 数组名[][];
        初始化
        动态初始化
        格式: 数据类型[][] 数组名 = new 数据类型[二维数组的长度][一维数组的长度];
        示例: int[][] arr = new int[2][3];
        静态初始化
        普通格式: 数据类型[][] 数组名 = new 数据类型[][]{{元素1, 元素2,...}, {元素1, 元素2,...}, ...};
        示例: int[][] arr = new int[][]{{1, 2}, {3, 4, 5}};
        简化格式: 数据类型[][] 数组名 = {{元素1, 元素2,...}, {元素1, 元素2,...}, ...};
        示例: int[][] arr = {{1, 2}, {3, 4, 5}};
        访问元素:
        格式: 数组名[二维数组的索引][一维数组的索引]
        二维数组的遍历: 嵌套for循环
o        数组操作常见的2个异常:
        ArrayIndexOutOfBoundsException: 数组索引越界异常
        发生原因: 使用了不存在的索引
        如何避免: 检查索引, 防止越界
        NullPointerException: 空指针异常
        发生原因: 引用类型的变量保存的值为null, 然后访问了数组元素或是调用了方法或属性
        如何避免: if (引用类型变量 != null) {操作}
o        数组获取最值(熟练代码书写)
o        两个数组变量指向同一个数组的操作(会画图, 会分析)
•        Java内存
o        内存分区
        栈: 存放局部变量
        垃圾会立即回收
        堆: 存放new出来的对象
        垃圾要在垃圾回收器空闲时回收
        方法区
        本地方法区
        寄存器
o        数组的内存分配
        int[] arr: 在栈中开辟内存空间
        new int[3];: 在堆中开辟内存空间, 并初始化元素的默认值
        =: 将堆内存中数组的地址值赋值给arr变量
3.        hile循环
•        方法(method, 函数function)
0.        定义格式: 修饰符 返回值类型 方法名(参数类型 参数名1, 参数类型 参数名2, ...) { 方法体; return 返回值;}
        修饰符: 目前记住public static
        返回值类型: 限定返回值的数据类型
        方法名: 方法的名字, 便于调用
        参数类型: 限定参数的数据类型以及调用方法时传入的数据类型
        参数名(形式参数=形参): 用于接收调用方法时传入的数据
        方法体: 完成该方法的功能
        return语句: 结束方法, 并把返回值传递给方法的调用者
1.       如何调用方法:
        直接调用: sum(1, 2);
        输出调用: System.out.println(sum(1, 2));
        赋值调用 : int n = sum(1, 2);
2.        方法的重载
        概念: Overload, 在同一个类中, 多个方法有相同的方法名, 方法参数列表不同
        特点:
        在同一个类中
        方法名相同
        方法的参数列表不同
        参数的个数不同
        参数的数据类型不同(包括顺序不同)
        重载与以下几点无关
        与方法的返回值类型无关
        和参数的参数名无关
        和方法体无关
3.        方法的形参类型
        方法形参是基本数据类型
        结论: 形参的值的改变不会影响实际参数
        为什么? 形参是定义在调用方法中的一个单独变量, 实际参数是定义在main方法中的另一个单独变量, 两者内存区域不同, 所以互不影响
        方法形参是引用数据类型
        结论:
        如果形参是修改自身保存的引用, 不会影响实际参数
        原因: 因为形参是调用方法中的一个单独变量, 实际参数是定义在main方法中的另一个单独变量, 形参改变其保存的引用指向, 并不影响实际参数的引用指向
        如果形参是通过引用修改堆内存中保存的数据, 会影响实际参数获取的值
        原因: 因为形参是调用方法中的一个单独变量, 实际参数是定义在main方法中的另一个单独变量, 形参通过引用修改的是堆内存中的数据, 而实际参数也是指向该堆内存中的数据, 所以形参修改后, 实际参数获取的值也会改变

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马