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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 调味汁的味道 初级黑马   /  2019-3-8 11:55  /  703 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 调味汁的味道 于 2019-3-8 12:04 编辑

第一章   Day01
今天是javaEE基础班的第一天,我了解JAVA的一些基本知识,了解JAVA语言的历史,下面是今天所学得详细内容:
1.1   java语言概述&基础知识
1.1.1   java语言发展史
Java语言是美国Sun公司(Stanford University Network)在1995年推出的计算机语言
Java之父:詹姆斯·高斯林(James Gosling)

1.1.2   命令提示符
控制台打开:
Win+r 打开运行,输入CMD

Dir   显示当前目录下的所有文件
Cls   清屏
Exit   退出
Cd..   返回上一级
Cd   进入指定文件名
盘符名:   进入盘符
Cd/   退回根目录

1.1.3   跨平台
我们的程序可以在任何一个程序上运行
JDK JRE JVM
        JDK:JAVA程序开发工具包 JRE+JAVA开发工具
        JRE:JAVA程序运行环境  JVM+核心类库
        JVM:JAVA虚拟机,JAVA代码都是运行在JAVA虚拟机上

1.2   HelloWorld及java语法
1.2.1   HellloWorld案例
//编写类名
public class HelloWorld {
//编写main方法主入口
        public static void main(String[] args){
                //编写输出heeloworld语句
System.out.println("HelloWorld");
        }
}

//注意:类名要和文件名相同
System.out.print();  //这是不换行的输出语句
System.out.println();  //这是换行的输出语句


1.2.2   注释
注释就是对代码的解释说明,它是给程序员看的。
1.2.3   注释分类
        单行注释://
        多行注释:/* */
        文档注释:/** */

1.2.4   关键字
关键字就是java中有特殊意义的词
特点:
        完全是小写的字母
        常见的开发软件中会有特殊颜色

1.2.5   常量
在程序运行中,不变的量
整数常量:不带小数点的整数
小数常量:带小数点
字符常量:加单引号的一个字符
字符串常量:加双引号的0个或0个以上的字符
布尔常量:true false
空常量:Null

1.2.6   数据类型
        基本数据类型
四类八种:
整数:
          字节  byte          1          -128~127
        短整数         short         2
          整数        int                4
        长整数        long         8


浮点数:
                单精度   float        4
                双精度         double         8
布尔:
                boolean                        1
字符:
                char                           2

        引用数据类型
不是基本数据类型的都是引用数据

1.2.7   变量
在程序运行中,可以改变的值
变量一般都是用来存储一些数据
格式:
a)        数据类型 变量名 = 值;
b)        数据类型 变量名;
变量名 = 值;
变量的使用:
        直接写变量名;

注意事项:
        变量使用不能超过作用域的范围
【作用域】:从定义变量的一行开始,一直到直接所属的大括号结束为止。
        可以通过一个语句来创建多个变量,但是一般情况不推荐这么写。

public class Demo3{
        public static void main(String[] args){
                //【作用域】:从定义变量的一行开始,一直到直接所属的大括号结束为止。
               
                {
                        int a = 1;
                        System.out.println(a);
                }
                a = 20;//这里会报错
                System.out.println(a);
        }
}
public class Demo3{
        public static void main(String[] args){
                //【作用域】:从定义变量的一行开始,一直到直接所属的大括号结束为止。
                int a = 20;
                {
                        int a = 1;//这里会报错
                        System.out.println(a);
                }
                System.out.println(a);
        }
}

1.2.8   标识符
标识符:我们给变量,方法或者类名就是标识符

命名规则:(硬性要求)
        标识符可以包含英文大小写字母,数字,下划线和$ 中文也可以
        不能以数字开头
        不能是关键字

命名规范(软性要求)
        类名:大驼峰 所有单词首字母大写
        类名:小驼峰 除了第一个单词外,所有单词首字母都大写

1.2.9   数据类型转换
        自动类型转换
特点:代码不需要进行特殊处理,自动完成
规则:数据范围从小到大
        强制类型转换
特点:代码需要进行特殊的格式处理,不能自动完成
格式:
        目标类型 变量名 = (目标类型)被转换的数据
注意事项:
        强制了下转换一般不推荐使用,因为可能会发生精度损失,数据溢出,只有你确定了我这个转换不会发生这些问题,或者就算出现了也无所谓的时候我才用。
        byte/short/char这三种类型都可以发生数学运算,在运算的时候都会先被提升为int类型再进行计算
        boolean类型不能发生数据类型转换
byte b1=10;
byte b2=20;
byte sum = b1+b2;//报错  改成int.




第二章   Day02
2.1   运算符
2.1.1   算术运算符:+ - * / %
        特别注意:
                /和数学中的除不太一样两个整数相除只能得到整数,如果需要得到小数要求至少其中一个是浮点数。
                %取余 比如10%3结果为1

2.1.2   自增和自减运算符:++ --
        a++; 相当于a=(a的数据类型)(a+1);
        a--; 相当于a=(a的数据类型)(a-1);
注意:
++可以写在变量的前面也可以写在变量的后面,单独写的时候写前面写后面都没有区别,区别就在和其它运算符一起写。
++变量名  (先自增再运算);
--变量名(先运算再自增);

2.1.3   赋值运算符: = += -= *= /= %=
        基本赋值运算符: =
代表将右侧的数据交给左侧的变量;
例如:
int a = 30;
a= a+3;
        符合赋值运算符:+=,-+,*=,/=,%=  (有隐含强制转换)
例如:
                int a = 10;
                a+ = 3;//相当于a=(int)(a+3);
                a-= 3;//相当于 a = (a的数据类型)(a-3);
2.1.4   比较运算符:> < >= <= == !=
比较结果是布尔类型;

2.1.5   逻辑运算符:& | ! ^ && ||
与 &&(短路与),&(没有短路效果)读成并且 ,结果都是一样的
或 || , | 读取或者
非 !取反
异或 ^ 可以用来判断是否是异性

短路:
左边表达式的结果确定之后,如果整个表达式的结果已经被确定了,就不会去执行右边的表达式

2.1.6   三元运算符:数据类型 变量名 = 布尔表达式?表达式1:表达式2
        执行流程:
先判断布尔表达式的结果,如果结果为true三元表达式的结果就是表达式1,否则就是表达式2

求三个数的最大值
int a=10;
int b=20;
int c=30;
int max = a>b?(a>c?a:c):b;
2.2   分支语句:if
三个部分:
                ①        if(判断表达式){
                                        语句体;
                                        }
                ②  else if(判断表达式){
                                        语句体;
                                        }
                ③  else{
                                        语句体;
                                }       
        if语句格式:
        首先有且仅有一个一个if,后面会有0个到多个else if语句,最后会有0个或1个else
        注意:开头肯定是一个if,有可能一个else if都没有,else有可能没有,如果有也只会出现一个else.
        执行流程:
从上到下依次执行判断表达式
                结果为true:则执行后面紧跟着的语句体.语句体执行完了整个if语句就结束了.
                结果为false:则继续判断下面一个判断表达式
        如果所有判断表达式的结果都为false,在有else语句的情况下就执行else里面的语句体,没有的话if语句结束.
        注意:
1.        一旦执行了一个大括号中的语句体,整个if语句就结束了。不可能出现执行两个语句体的情况。
2.        如果大括号中的语句体只有一行代码的时候可以把大括号省略,但是建议永远不要省略。
2.3   键盘录入
导包:import java.util.Scanner;
创建对象:Scanner  sc = new Scanner(System.in);
键盘录入给变量名赋值: int num = sc.nextInt();

第三章   Day03
3.1   switch
标准格式:
                switch (表达式) {
                        case 值1:
                                语句体1;
                                break;
                        case 值2:
                                语句体2;
                                break;
                        case 值3:
                                语句体3;
                                break;
                        ...
                        default:
                                语句体n+1;
                                break; // 最后一个break语句可以省略,但是强烈推荐不要省略
                }

执行流程:
          看表达式的结果和哪个case后面的值相同,就执行那个case后面的语句体,碰到break就结束switch.
          如果没有符合要求的case则执行default后面的语句体.

注意事项:
        ①switch后面小括号当中只能是下列数据类型:
                        基本数据类型:byte/short/char/int
                        引用数据类型:String字符串、enum枚举
        ②switch可以没有default,但是一般都会加上
        ③case语句后面可以不加break.但是如果不加break就会出现case穿透问题.匹配哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束为止;


3.2   循环
3.2.1   for
格式:
                for(初始化语句;条件判断;步进语句){
                        循环体;
                }
执行流程:

先执行初始化语句,然后看条件判断的结果,如果为false  循环结束,如果为true  执行循环体.循环体执行完后执行步进语句.然后继续执行条件判断(PS:注意,不是初始化语句)如果结果为false,结束循环,结果为true则继续循环体,然后步进语句以此类推.


注意事项:
                for循环的变量在小括号当中定义,只有循环内部才可以使用。

3.2.2   while
格式:
                while(判断表达式){
                        循环体;
                }
执行流程:
                看判断表达式的结果,如果为false循环结束,如果为true,则执行循环体.循环体执行完后继续看判断表达式的结果以此类推

3.2.3   do….while
格式:
                do{
                        循环体;
                }while(判断表达式);

执行流程:
                先执行循环第,然后看判断表达式的结果如果为true则继续执行循环体如果判断表达式的结果为false则循环结束,如此反复。

3.2.4   循环小结
总结:如何选择循环语句
                用的最多的是for循环,如果循环次数已知一般用for.如果循环体和循环次数有关系,也用for循环
                while循环一般在循环次数未知的情况下使用,或者死循环一般都用while循环
                do...while循环基本不用
3.2.5   循环控制语句
break:
        在循环过程中,碰到break整个循环就直接结束了,应用场景:break只能出现在循环中或者switch中
Continue:
如果在循环过程中碰到了continue,则跳过本次循环,继续下次循环


3.2.6   死循环
死循环就是会一直循环下去的循环

while(true){

}

for(;;){

}

3.3   Random随机数
步骤:
       
         A.  导入包    import java.util.Random;
     B.  创建对象   Random r = new Random();
     C.  获取随机数  int num = r.nextInt(10);//[0,10)






第四章   Day04
4.1   数组
1.数组的长度一旦确定就不能改变
2.数组中元素的数据类型都是一样的

4.1.1   数组的初始化
数组的初始化:在内存当中创建一个数组,并且向其中赋予一些默认值。

两种常见的初始化方式:
1. 动态初始化(指定长度)
格式:
        数据类型[] 数组名 = new 数据类型[长度];


解析含义:
左侧数据类型:也就是数组当中保存的数据,全都是统一的什么类型
左侧的中括号:代表我是一个数组
左侧数组名称:给数组取一个名字
右侧的new:代表创建数组的动作
右侧数据类型:必须和左边的数据类型保持一致
右侧中括号的长度:也就是数组当中,到底可以保存多少个数据,是一个int数字

2. 静态初始化(指定内容)
格式:
        省略格式:(推荐使用)
                数据类型[] 数组名 = {元素值1,元素值2,元素值3,...};

        标准格式:
        数据类型[] 数组名 =new 数据类型[] {元素值1,元素值2,元素值3,...};

4.1.2   数组元素的表示方式
格式:
        数组名[索引]


索引值:就是一个int数字,代表数组当中元素的编号。
【注意】索引值从0开始,一直到“数组的长度-1”为止。

4.1.3   数组的内存图
1.java内存中的几块区域(重要的)

        ①栈
                        方法被调用的时候都会入栈
                        局部变量都被保存在栈中
        ②堆
                        new出来的东西都在堆中
                        堆中的东西都有默认初始化值



局部变量:定义在方法中的变量

数组的实体保存在堆中
数组名实际保存的是数组实体的地址值

4.1.4   数组长度的表示
格式:       
                数组名.length

4.1.5   数组的遍历
int[] arr={1,2,3,4,5,7};
//遍历输出数组元素
for(int i=0;i<arr.length;i++){
        System.out.println(arr);
}




第五章   Day05
5.1   方法
5.1.1   方法的定义:
方法的定义格式:
                public static  返回值类型  方法名(参数类型 参数名,参数类型2 参数名2,.....){
                                方法体;
                                return 返回值;
                }

修饰符:目前固定使用public static
返回值 :就这件事情做完之后的结果
返回值类型: 这件事情做完后的结果的类型
方法名:这件事情的名字
参数:做这件事情需要的东西
参数类型  : 参数的数据类型  
参数名:就是给参数取的一个名字

return :用来返回最终的结果.  两个作用,第一停止当前方法,第二将后面的返回值还给调用处


定义方法三要素:(先把这三个要素分析出来再去定义方法)
方法的功能
方法的参数
方法的返回值类型

5.1.2   方法的调用
格式:
                最纯粹的格式:   
                                 方法名(参数1,参数2...);
               

                注意:传参数的时候方法定义里有几个参数就传几个参数.方法定义的时候参数是什么类型就传什么类型.
                                如果方法有返回值,一般是用接收返回值

5.1.3   方法的重载
方法重载(Overload)的定义:
        在同一个类中,方法名相同,参数列表不同的方法才叫重载


参数列表不同:
        参数个数不同
        参数类型不同
        参数的多类型顺序不同

如何快速的分辨参数列表是否相同:
        把每个参数的数据类型拼接在一起组成一个字符串.
        比较两个字符串是否相同


注意:看参数列表是否相同的时候和参数名没有关系

第六章   Day07
6.1   面向对象思想
面向过程思想
        让我们去做事情的时候,我们自己去把每个步骤给做了   
缺点 自己太累了

面向对象思想:
        让我们去做事情的时候,我们自己不做,指挥别人或者别的东西去做  我们负责指挥    优点:我们轻松了,并且任务也能完成
6.2   类和对象
类:对一个共同事物属性和行为的的描述
对象:对象是某类事物的一个个体

6.3   封装
就是把一些东西隐藏起来。

6.4   构造方法
        构造方法的特点:
类名和方法名相同
                ②没有返回值类型,连void都不能写
        构造方法的调用格式:
                new 类名(参数);












0 个回复

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