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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 阿里云 于 2017-12-8 14:40 编辑

  • 基础班
    • 主要内容
      • day01:java环境,常量变量,数据类型
      • day02:Eclipse的概述和安装,运算符,Scanner键盘录入对象
      • day03:流程控制语句,循环语句
      • day04:Random随机数对象,数组
      • day05:方法
      • day06:断点调试

笔记帖子网址

day01
  • Java平台
    • J2SE标准版:桌面应用程序的开发。是其他两者的基础。
    • J2ME小型版:嵌入式应用程序,移动端开发,如机顶盒、手机等。已被安卓替代了做手机端开发。
    • J2EE企业版:Web应用程序开发(服务器端开发)。例如天猫、京东等后台开发。
  • 跨平台原理
    • 平台:操作系统Window,Linux,Mac。
    • JVM:实现跨平台需要依赖各个版本的Java虚拟机JVM(Window,Linux,Mac三个版本)。
  • JRE和JDK
    • JRE:Java运行环境,包括虚拟机和lib文件夹(程序所需核心类库)等,运行程序只需安装JRE即可。
    • JDK:提供给开发程序者使用,包括JRE、开发工具(编译工具javac.exe、运行工具java.exe)。安装JDK不用安装JRE。
    • JDK开发程序=>交给jre保证程序正常运行=>JVM实现程序跨平台运行。
  • 常用DOS命令(这是CLI命令行界面,另外是GUI图形化界面)
    • 目录
      • 打开控制台 winows+R => cmd
      • 盘符切换 盘符名称: 例如 d:
      • 显示目录下的文件及文件夹 dir
      • 显示指定目录下的文件及文件夹 dir 目录名
      • 改变指定目录 cd(chenge directory)
        • 进入 cd 目录名称
        • 回退 cd..
        • 当前目录. 上级目录..
        • 多级进入 cd 目录名称\目录下文件名
        • 多级回退(回退至根目录) cd\
      • 清屏 cls
      • 上下箭头用于选择已经输入的命令
      • 退出dos命令行 exit

  • JDK的安装
    • 下载安装步骤在“JDK下载安装文档.doc”。
    • 安装目录不要有空格等特殊符号、汉字。
    • 不同的系统安装时不同版本。
    • 安装在D盘开发文件夹:develop。
    • jdk包含jre,但是单独安装一个jre也无妨。
    • JDK的文件夹:src.zip文件为源代码
  • helloword案例
    • 流程:编写【源文件】myprogram.java=>通过编译器compller=>生成【字节码文件】myprogram.class=>通过解释器interpreter=>实现程序结果【二进制】。
    • 在jdk的bin文件目录下完成。
    • 编写源文件代码
      • 首先使用“publice class 类名{}”添加一个类,类名与文件名相同。
      • 类中添加主方法,程序从主方法开始:public stratic void main(String[] args){}
      • 主方法中添加输出语句:System.out.println("helloworld");
      • 注意:Tab键缩进。
      • System.out.println:打印并换行
      • System.out.print:打印不换行
    • 运行源代码
      • 在命令行命令中对原代码进行编译生成字节码文件:使用cd命令进入bin文件夹=>使用javac命令运行helloworld.java生成.class字节码文件=>使用java命令执行helloworld(不需要.class!)

  • 配置环境变量
    • 为了在任何目录下运行JAVA程序。
  • 注释
    • 单行注释://
    • 多行注释:/**/
    • 文档注释:/* / 用于描述方法、类的说明,调用时鼠标滑过可以查看注释
  • 关键字(赋予特殊含义的单词)
    • 特点
      • 组成关键字的字母都是小写。
      • 常见的代码编辑器有特殊的标记。

  • 常量(程序中不可改变的量)
    • 分类
      • 字符串常量:"hello"
      • 整数常量:5
      • 小数常量:123.4
      • 字符常量:'a'
      • 布尔常量:true,false
      • 空常量:null

  • 变量(内存中的一块区域,程序执行过程中,其值在【一定范围内】发生改变,通过数据类型来限定)
    • 格式【数据类型 变量名=初始化值;】
  • 计算机存储单元
    • 1 B(【字节是最小存储单元】)=8 b(位、比特)
    • 1 KB=1024 B
    • 1 MB=1024 KB
    • ……
  • 数据类型(java必须指定数据类型)
    • A:基本数据类型(4类8种)
      • 整型:默认用int
        • 【字节byte表示范围:-128~127、正负2的8次方】
        • short
        • int
        • long类型要加大写L,例如123L
      • 浮点型:默认double
        • float类型加F。
        • double
      • 字符型:char -128-127
        • 大写:ch>='A'&&ch<='Z'
        • 小写:ch>='a'&&ch<='z'
        • 数字:ch>='0'&&ch<='9'
      • 布尔型:boolean
    • B:引用数据类型(数组、类、接口)
  • 标识符:用来给包、类、方法、变量起名字的符号
    • 组成:Unicode字符(数字、大小写英文、汉字)、下划线、美元符。
    • 注意:
      • A:不能以数字开头
      • B:不能是关键字

  • 常见命名规则:见名知意【英文单词>汉语拼音>字母】
    • 包:(其实就是文件夹,用于对类进行管理)【全部小写,多级包用.隔开,多级包为一级一级的文件夹】
    • 【类:每个单词首字母大写】
    • 【方法和变量:一个单词字母小写,多个单词第二个单词开始首字母大写。缩写:尽量使用一个词】
  • 变量
    • 定义格式:数据类型 变量名=初始化值;
    • 注意:float数据类型直接加F,LONG数据类型直接加L
  • 变量定义的注意事项:
    • A:变量未赋值,不能直接使用。
    • B:变量只在它所属的范围内有效。(大括号内有效)
    • C:一行上可以定义多个变量,但是不建议。
    • D:初期可以使用拼音做变量名,工作中严禁使用拼音,应使用英文单词。
  • 类型的转换
    • 隐式转换
      • 转换规则:byte、short、char=>int=>long=>float=>double
      • 注意:两个byte类型变量相加会转化成int,因为相加可能超出byte范围,自动加一级。
    • 强制转换
      • 格式:目标类型 变量名=(目标类型)(被转换的数据)
      • 建议:一般不做强制转换,可能损失精度。



day02
  • Eclipse的概述和安装
    • 安装可能出现问题
      • 需要首先配置java环境
      • 32位和64位要与jdk匹配

  • Eclipse
    • src 源代码目录
    • bin 编译文件目录
    • 创建项目=>包=>类
  • Eclipse快捷键及常用操作
    • 内容辅助键 alt+/
    • 注释
      • 单行 选中内容,ctrl+/ 取消再来一次
      • 多行 选中内容,ctrl+shift+/ 取消注释ctrl+shift+\
    • 格式化 ctrl+shift+f
    • 整行前移 选中内容,shift+tab
    • ALT+ENTER属性;
    • ct+d删除一行;
    • shift+enter在任何位置下一行;
    • 左手shift+字母切换大写
    • 选中+shift+tab:取消一个缩进;选中+tab:整体缩进
    • 格式化设置为ctrl+alt+f
    • 选中包,ctrl+n:快速新建包和类。
    • 重命名项目、包、类:右键-Refactor-Rename。或者F2
    • 导入项目:在项目区域右键-import-General,展开-Existing Projects into Workspace-点击next-选择要导入的项目-注意:这里选择的是项目名称
    • 导包快捷键:ctrl+shift+o
    • shift+alt+a:开启框选
    • ctrl+enter:貌似可以用来快速打断字符串
  • 运算符
    • 算术 +,-,*,/,++,--,%
      • 字符与数字相加为ASCII码相加,与字符串相加为拼接。
      • /:整数相除只能得到整数,要想得到小数必须有浮点数参与计算。【例如:3/4=0;3.0/4=0.75。】(隐式转换)
      • +:字符参与加法运算,其实是拿字符在计算机中储存的数据值来参与运算的,但是直接输出字符时输出仍是字符。‘A’+10=75,【记住:'A'65 'a'97 '0'48】。
      • +:字符串的加法是与其他拼接,但是注意【运算是从左到右】。10+20+“ab”=30ab;“ab”+10+20=ab1020。
      • 常用方法:数值转换为字符串:+空字符串,例如:10+“”。
      • ++、--一般为单独使用!但是也可以用在前面:参与其他操纵的时候,++在后面先拿变量操作,然后变量++;在前面反之。例如int i=1; a=i++输出为1因为【“i首先把值给表达式,然后自增1”】,a=++i输出为2。
      • %:取余得数的正负已左边的正负为准。例如:-12%5=-2,12%-5=2。
      • %用途:
        • 判断是否是奇偶数:偶数x%2=0,奇数x%2=1。
        • 【判断是否能被某个数整除:余数是零则可以整除。】
        • 【获取一个数的个位、十位、百位……:取个数位1234%10=4,取百位1234/100%10=2,取千位1234/1000%10=1】

    • 赋值 =,-=,+=,*=……
      • 注意:-=,+=,*=……【隐含了强制转换,例如:byte a=1; a+=10相当于a=(a的强制类型)(a+10),但是写成a=a+10错误】
    • 关系 ==,!=,>,>=,<,<=
      • 注意:把==写成=不会报错。例如:a==1输出true,a=1输出为1。
    • 逻辑 &,|,^,!,&&,||
      • ^为相同则false,不同则true。举例:判断情侣关系。
      • 使用^实现两个int变量交换(boolean变量也可以,double、char、String不可以使用),不借助临时变量,不增加系统资源的消耗,代码如下:
        a=a^b;
        b=a^b;
        a=a^b;
      • 【&&与&的区别:&&有短路效果,左边为false则不再执行。&左边无论什么右边都执行。】
      • 【||与|的区别:||为左边为ture则右边不执行。|左边无论什么右边都执行。】
      • 闰年算法:(i % 4 == 0 && i % 100 != 0) || (i % 400 == 0)
      • 闰年算法说明:四年一闰: 能被4整除的是,百年不闰: 能被100整除的不是,四百年再闰: 能被400整除的是
    • 三元
      • 格式:(关系表达式)?表达式1:表达式2;
      • 执行过程:如果表达式为true,表达式1为结果,反之为表达式2。
      • 返回值取表达式1或者表达式2。

  • 键盘录入
    • 使用步骤
      • 导包:
        • 手动录入:import java.util.Scanner;
        • 导包还可在下一步报错时点击自动生成。
        • 快捷键(推荐):ctrl+shift+o
      • 创建键盘录入对象:
        • Scanner sc=new Scanner(System.in);
      • 接收数据:
        • int i=sc.nextInt();
        • String i=sc.next();
        • double i=sc.nextDouble();
        • nextLine()不要和nextInt()或者nextDouble()混用.所以尽量不用nextLine(),用next()代替nextLine().




day03
  • 流程控制语句(没有{}的语句只控制;之前的语句,也就是只控制下一行语句)
    • 顺序结构
    • 选择结构(我的选择顺序:三元运算符=>switch语句=>if语句。没有{}的语句只控制;之前的语句,例如:if(a==b)a+b=c;)
      • if
        -注意:只声明没赋值的变量,通过if语句时没有赋值的话,执行程序运行时报错不能运行。
      • switch
        • 语句格式:
          switch(表达式){//【表达式只能是:byte,short,char,int,String,枚举。不能是double、float、long!!!】
          cast 值1:【只能是常量,而且值的类型要与小括号中一样】
          语句体1;
          break;//中断【如果这里不写break会继续运行一个语句体,这叫“case穿透”】
          cast 值2:
          语句体2;
          break;
          ……
          default://所有值不匹配执行
          语句体n+1;
          break;//最后的一个break可以省略
          }

    • 循环结构
      • for(知道循环次数的场合使用)
        • for(初始化;判断条件语句;控制条件语句)
          { 循环体语句;
          }
        • 多条语句:for (int strart = 0,end=arr.length-1;strart<=end;start++,end--) {}
      • while【不知道循环次数的场合使用】
        • 初始化语句;
          while(判断条件语句){循环体语句;控制条件语句;
          }
        • 无限循环:while(true){};//while(true){}可以通过break中断
      • do…while(不知道循环次数的场合使用,至少执行一次,一般不用)
        • 初始化语句;
          do {
          循环体语句;
          控制条件语句;
          }while(判断条件语句);


  • 三种循环语句的区别
    • do……while循环语句至少执行一次循环体。
    • for循环结束后,初始化的变量不能再被使用了,而while循环结束后,初始化的变量还可以继续使用。
    • 推荐使用循环顺序:for=>while=>do…while。
  • 跳转控制语句(离开使用场景没有意义!)
    • break:中断
      • 使用场景:只有这两个场景!
        • switch语句中
        • 循环中
      • 作用:结束所有循环!(如果循环嵌套使用的话,只中断break语句所在的最近的循环)
    • continue:继续
      • 使用场景:循环中
      • 作用:结束本次循环!



day04
  • Random
    • 生成一个随机数
    • 导包:import java.util.Random;
    • 创建对象
      • Random r=new Random();
    • 获取随机数
      • int number=r.nextInt(x);//x为任意整数
      • 上面产生一个数0<=number<x的数据。 [0,x)
      • 【获取1-100之间随机数:r.nextInt(100)+1;】
      • 【注意:生成0-9的随机数:r.nextInt(10);】

  • 数组(数组长度一旦确定不可改变!)
    • 一维数组:
    • 格式(推荐):数据类型[] 数组名; int[] arr;
    • 格式2:数据类型 数组名[]; int arr[];
    • 初始化数组:
      • 动态初始化:只给出长度,系统给出初始化值。
        数据类型[] 数组名=new 数据类型[数组长度];
        对于长度很长的数组定义之后赋值用!
      • 静态初始化:给出初始化值,系统决定长度。
        数据类型[] 数组名=new 数据类型[]{元素1,元素2...}
        数据类型[] 数组名={元素1,元素2...}
    • 数组中的元素值:数组名[索引]。索引从0开始。
    • 每一个对象都有默认值
      • byte,short,int,long 0
      • float,double 0.0
      • char ‘\u0000’ ‘’
      • boolean false
      • 引用类型 null
    • 栈:存储局部变量
    • 堆:存储的是new出来的对象
    • 数组存储的是一个地址值,不同名字的数组可能指向同一个内存地址。
    • 【数组1 = 数组2; 是地址值的相等。】
    • 遍历数组元素:for(int x=0;x<数组名.length;x++){数组};//注意长度减1。
    • 获取最值:
      int[] arr={11,33,77,22};
      int min =arr[0];
      for (int j = 0; j < arr.length; j++) {
      if (min>arr[j]) {  min=arr[j];}
      }
    • 二维数组:
      • 动态初始化:只给出长度,系统给出初始化值。
        数据类型[][] 数组名=new 数据类型[数组长度][数组长度];
      • 静态初始化:给出初始化值,系统决定长度。
        数据类型[][] 数组名={{元素1,元素2,...},{元素1,元素2,...}...};//一位数组长度可以不同
      • 这样也正确:int[][] arr =new int[4][];//此时一维数组为null。
    • 查看数组元素:Arrays.toString(arr);=>[1,2,3,4]
    • Arrays.toString(a)==Arrays.toString(b);这条语句不能判断两个数组相同!

day05
  • 方法概述
    • 定义格式:
      修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...){  方法体;  return 返回值;}
    • 格式解释:
      A 修饰符:目前记住public static  关于static:静态的方法中不能直接调用非静态的成员方法,可以直接调用静态的成员方法;非静态的方法需要使用对象来调用.B 返回值类型:用于限定返回值的数据类型
      C 方法名
      D 参数类型:用于限定调用方法时传入的数据类型
      E 参数名:用于接收调用方法时传入的数据的变量
      F 方法体
      G return 结束方法,并且把返回值带给调用者
    • 两个明确
      • 返回值类型 明确功能结果的返回值类型
      • 参数列表 明确有几个参数,以及参数的数据类型
    • void
      • 表示无返回值类型,方法只能单独调用,不能赋值调用和输出调用。
      • 如果写return;则方法结束.
    • 注意:return之后方法就结束了!在void方法中,可以用return结束程序.
  • 方法重载
    • 在同一个类中,出现了方法名相同的情况。
    • 特点:
      • 方法名相同
      • 参数类型或数量其中之一不同就可以(也称为方法列表不同)
    • 不能出现方法名相同,参数列表也相同的情况。
  • 方法的形式参数
    • int a=10;
      int b;
      change(a,b);//a和b是实际参数,实际参与运算
    • 形式参数:用于接收参数的变量,在方法的声明上
    • 方法的参数如果是基本数据类型:形式参数的改变不影响实际参数
    • 方法的参数如果是引用数据类型(数组为引用数据类型):形式参数的改变直接影响实际参数,但是如果有new出现时应该注意是否修改了数组的引用,可能不影响实际参数


day06
  • 断点调试
    • 作用
      • 查看程序的执行流程
      • 调试程序
    • 添加断点方法:在代码区域的左边双击即可
    • 运行加断点的程序:代码区域--右键--Debug As--Java Application
    • F6 继续单步运行
    • 看哪些区域
      • 代码区域:看程序执行流程
      • Debug区域:看程序的执行流程
      • variable:变量的变化
      • Console:看程序的输入和输出
    • 关闭断点调试
      • 按红色的停止按钮,再按右上角的"java"返回原来的界面
    • 如何去掉断点
      • 把加断点的操作执行一遍
      • 在Debag视图中,找到Breakpoint,选中要删除的断点,单击双×即可
    • 断点必须加在有效的语句上

0 个回复

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