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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Y-J

初级黑马

  • 黑马币:47

  • 帖子:14

  • 精华:0

© Y-J 初级黑马   /  2019-3-29 19:35  /  1164 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

JVM-java的虚拟机           JRE:是java程序的运行环境      JDK:是java程序的开发工具包

Java程序开发三步骤:编写,编译,运行   javac.exe:编译器     java.exe:解释器

注释(comment)://-单行      /*  */-多行

关键字(keywords):在java中已经定义好的单词,具有特殊含义的.

标识符的命名规则:可以包含英文字母26个(区分大小写),0-9数字,$和_但不能以数字开头且不能是关键字

标识符的命名规范:类名-首字母大写,后面每个单词首字母大写(大驼峰式)

​                                方法名-首字母小写,后面每个单词首字母大写(小驼峰式)

​                                变量名-全部小写

```
*常量:是指在java中固定不变的数据
分类:
整数常量:所有整数-0,1,567,-89等            小数常量:所有小数-0.0,-0.8,3.78等
字符常量:单引号引起来,只能写一个字符,必须有内容-'a','.','好'等
字符串常量:双引号引起来,可以写多个字符,也可以不写-"A","Hello","你好"
布尔常量:只有两个值(流程控制中讲解)-ture,flase
空常量:只有一个值(引用数据类型讲解)-null(代表没有任何数据,空常量不能直接用来打印输出)
*变量:常量是固定不变的数据,那么在程序中可以变化的量
变量定义格式的三要素:数据类型,变量名,数据值(数据类型 变量名 = 数据值;)
&变量名称:在同一个大括号范围内,变量的名字不可以相同
&变量赋值:定义的变量,不赋值不能使用.
/*
使用变量的时候,有一些注意事项:

1. 如果创建多个变量,那么变量之间的名称不可以重复。
2. 对于float和long类型来说,字母后缀F和L不要丢掉。
3. 如果使用byte或者short类型的变量,那么右侧的数据值不能超过左侧类型的范围。
4. 没有进行赋值的变量,不能直接使用;一定要赋值之后,才能使用。
5. 变量使用不能超过作用域的范围。
【作用域】:从定义变量的一行开始,一直到直接所属的大括号结束为止。
6. 可以通过一个语句来创建多个变量,但是一般情况不推荐这么写。
```

1. **技术贴:简书,掘金,Gitub等**

2.数据类型:基本数据类型{包括整数,浮点数,字符,布尔},

引用数据类型{包括,字符串类,数组,接口,Lambda等}

```
字节型-bate(关键字)-1个字节(占用内存)- -128~127(取值范围)
短整型-short(关键字)-2个字节(占用内存)- -32768~32767(取值范围)
整型-int(关键字)-4个字节(占用内存)- -2的31次方~2的31次方-1(取值范围)
长整型-long(关键字)-8个字节(占用内存)- -2的63次方~2的63次方-1(取值范围)
单精度浮点数-float(关键字)-4个字节(占用内存)-1.4013E-45~3.4028E+38(取值范围)
双精度浮点数-double(关键字)-8个字节(占用内存)-4.9E-324~1.7977E+308(取值范围)
字符型-char(关键字)-2个字节(占用内存)-0~65535(取值范围)
布尔型-boolean(关键字)-1个字节(占用内存)-true,flase(取值范围)
&注意事项:
1. 字符串不是基本类型,而是引用类型。
2. 浮点型可能只是一个近似值,并非精确的值。
3. 数据范围与字节数不一定相关,例如float数据范围比long更加广泛,但是float是4字节,long是8字节。
4. 浮点数当中默认类型是double。如果一定要使用float类型,需要加上一个后缀F。
   如果是整数,默认为int类型,如果一定要使用long类型,需要加上一个后缀L。推荐使用大写字母后缀。
```

2.数据类型的转换:自动转换(隐藏转换)和强制性转换.

> 自动类型转换(隐式):将 *取值范围小* 的类型自动提升为取值范围大的类型`[short,byte,char--->int--->long--->float--->``double(特点:代码不需要进行特殊处理,自动完成;规则:数据范围从小到大。)
> 强制类型转换
>         1. 特点:代码需要进行特殊的格式处理,不能自动完成。
>         2. 格式:范围小的类型 范围小的变量名 = (范围小的类型) 原本范围大的数据;
>
> 注意事项:
>
> 1. 强制类型转换一般不推荐使用,因为有可能发生精度损失、数据溢出。
> 2. byte/short/char这三种类型都可以发生数学运算,例如加法“+”.
> 3. byte/short/char这三种类型在运算的时候,都会被首先提升成为int类型,然后再计算。
> 4. boolean类型不能发生数据类型转换
>
> {转换格式:  数据类型 变量名 =  (数据类型) 被转换数据值;

编译器的两点优化:

1>对于byte/short/char三种类型来说,如果右侧赋值的数值没有超过范围,那么Javac编译器将会自动隐含地为我们补上一个(byte)(short)(char);如果没有超过左侧的范围,编译器补上强转,如果右侧超过了左侧范围,那么直接编译器报错.

2>在给变量进行赋值的时候,如果右侧的表达式当中全都是常量,没有任何变量,那么编译器javac将会直接将若干个常量表达式计算得到结果这称为"编译器的常量优化",但是注意:一旦表达式当中有变量参与,那么就不能进行这种优化了.

```
ASCII编码表:American Standard Code for Information Interchange,美国信息交换标准代码。
Unicode码表:万国码。也是数字和符号的对照关系,开头0-127部分和ASCII完全一样,但是从128开始包含有更多字符。就是将人类的文字和一个十进制数进行对应起来组成一张表格.
0-48  A-65 a-97
```

运算符:算数,赋值,比较,逻辑,三元

> ```
> 算数运算符:+(加法运算,字符串连接运算),-,*(乘法),/,%(取模运算,两个数字相除取余),
> ++(自增),--(自减)
> &注意事项: 一旦运算当中有不同类型的数据,那么结果将会是数据类型范围大的那种。
>     +符号在字符串中操作中表示连接,拼接的含义("a"+"b"的结果是"ab",连接含义)
> ^ ++ 运算,变量自己增长1.反之,--运算,变量自己减少1,用法与++一致.
> &独立运算:变量独立运算时,前++和后++没有区别(变量前++:++i;变量后++:i++)
> &混合运算:和其他变量放在一起,前++和后++就产生不同了.(变量前++:先算后用;变量后++:先用后算)
>
> 赋值运算符:==(等于号),+=(加等于:i += 1-->i = i +1),-=(减等于),*=(乘等于),/=(除等于),%=(取模等于)
> 赋值运算符:就是将符号右边的值,赋值给左边的变量.
> ^比较运算符:两个数据之间进行比较,运行结果是布尔值 true或false
> <,>,>=,<=,(==: 相等符号) (!=不等于符号)
>
> 逻辑运算符:用来连接
> 与(并且)        &&        全都是true,才是true;否则就是false
> 或(或者)        ||        至少一个是true,就是true;全都是false,才是false
> 非(取反)        !        本来是true,变成false;本来是false,变成true
> 与“&&”,或“||”,具有短路效果:如果根据左边已经可以判断得到最终结果,那么右边的代码将不再执行,从而节省一定的性能。
> 注意事项:
> 1. 逻辑运算符只能用于boolean值。
> 2. 与、或需要左右各自有一个boolean值,但是取反只要有唯一的一个boolean值即可。
> 3. 与、或两种运算符,如果有多个条件,可以连续写。
> 两个条件:条件A && 条件B
> 多个条件:条件A && 条件B && 条件C
>
> 三元运算符:需要三个数据才可以进行操作的运算符。
> 格式:数据类型 变量名称 = 条件判断 ? 表达式A : 表达式B;
> 流程:
> 首先判断条件是否成立:
>         如果成立为true,那么将表达式A的值赋值给左侧的变量;
>         如果不成立为false,那么将表达式B的值赋值给左侧的变量;
> 二者选其一。
> 注意事项:
> 1. 必须同时保证表达式A和表达式B都符合左侧数据类型的要求。
> 2. 三元运算符的结果必须被使用
> ```

3.流程控制语句

1>**顺序结构(**自上而下)

2><u>判断语句(</u>if;if...else;if...else...if...else)

```
*if语句格式                                 
if(关系表达式){
    语句体;
}

执行流程:首先判断关系表达式看其结果是true还是false;如果是true就执行语句体,如果是false就不执行语句体.

*if...else语句格式                                 
if(关系表达式){
    语句体1;
}else{
    语句体2;
}

执行流程:首先判断关系表达式看其结果是true还是false;如果是true就执行语句体1,如果是false就不执行语句体2.

*if...else...if...else语句格式                                 
if(判断条件1){
    执行语句1;
}else if(判断条件2){
    执行语句2;
}else if(判断条件n){
    执行语句n;
}else{
    执行语句n+1;
}

执行流程:首先判断关系表达式看其结果是true还是false;如果是true就执行语句体1;如果是false就继续判断关系表达式2看其结果是true还是false,如果是true就执行语句体2;如果是false就继续关系表达式...看其结果是true还是false;......;如果没有任何关系表达式为true,就执行语句体n+1.
```

switch(选择语句)

```
switch(表达式){
    case 常量值1:
    语句体1;
            break;
    case 常量值2:
    语句体2;
            break;
        ...
        default:
        语句体+1;
                break;
}

执行流程:首先计算出表达式的值;其次和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇得到break就会结束;最后如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉.
*在switch语句中,表达式的数据类型可以是byte,short,int,char,enum(枚举),jdk7后可以接收字符串.
case的穿透性:在switch语句中,如果case的后面不写break,将会出现穿透现象,也就是不会在判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束.
```

switch(选择语句)使用的注意事项:

1. 多个case后面的数值不可以重复。

2. switch后面小括号当中只能是下列数据类型:
   基本数据类型:byte/short/char/int
   引用数据类型:String字符串、enum枚举

3. switch语句格式可以很灵活:前后顺序可以颠倒,而且break语句还可以省略。
   “匹配哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束为止。”

   **循环语句**

   基本组成部分,一般可以分成四部分:

   1. 初始化语句:在循环开始最初执行,而且只做唯一一次。
   2. 条件判断:如果成立,则循环继续;如果不成立,则循环退出。
   3. 循环体:重复要做的事情内容,若干行语句。
   4. 步进语句:每次循环之后都要进行的扫尾工作,每次循环结束之后都要执行一次.

for循环

```
格式:
for(初始化表达式1;布尔表达式2;步进表达式4){
    循环体3
}
执行流程:执行顺序:1234>234>234...2不满足为止
1负责完成循环变量初始化
2负责判断是否满足循环条件,不满足则跳出循环
3具体执行的语句
4循环后,循环条件所涉及变量的变化情况
```

while循环有一个标准格式,还有一个扩展格式。

标准格式:

初始化表达式1

while (布尔表达式2) {
        循环体[3

​        步进表达式4

}

执行流程:执行顺序:1234>234>234...2不满足为止
1负责完成循环变量初始化
2负责判断是否满足循环条件,不满足则跳出循环
3具体执行的语句
4循环后,循环条件所涉及变量的变化情况

扩展格式:

do-while循环的标准格式:

初始化表达式1

do {
        循环体
} while (条件判断);

扩展格式:

初始化语句
do {
        循环体
        步进语句
} while (条件判断);

三种循环的区别。

1. 如果条件判断从来没有满足过,那么for循环和while循环将会执行0次,但是do-while循环会执行至少一次。
2. for循环的变量在小括号当中定义,只有循环内部才可以使用。while循环和do-while循环初始化语句本来就在外面,所以出来循环之后还可以继续使用。

break关键字的用法有常见的两种:

1. 可以用在switch语句当中,一旦执行,整个switch语句立刻结束。
2. 还可以用在循环语句当中,一旦执行,整个循环语句立刻结束。打断循环。

关于循环的选择,有一个小建议:
凡是次数确定的场景多用for循环;否则多用while循环。

*另一种循环控制语句是continue关键字。

一旦执行,立刻跳过当前次循环剩余内容,马上开始下一次循环。

永远停不下来的循环,叫做死循环。

死循环的标准格式:
while (true) {
        循环体
}

集成开发环境,是一种专门用来提高Java开发效率的软件。
免费的IDE当中:Eclipse
收费的IDE当中:IntelliJ IDEA
免费+收费所有的IDE当中:全世界用得最多的就是IntelliJ IDEA

4.方法

###### 方法:就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能,当我们需要这个功能的时候,就可以去调用.这样既实现了代码的复用性,也解决了代码冗余的现象.

方法其实就是若干语句的功能集合。

定义一个方法的格式:

public static void 方法名称() {
        方法体
}

调用格式:

方法名称():

方法名称的命名规则和变量一样,使用小驼峰。
方法体:也就是大括号当中可以包含任意条语句。

注意事项:

1. 方法定义的先后顺序无所谓。

2. 方法的定义不能产生嵌套包含关系。

3. 方法定义好了之后,不会执行的。如果要想执行,一定要进行方法的【调用】。

   ​   

    参数(原料):就是进入方法的数据。
    返回值(产出物):就是从方法中出来的数据。

    定义方法的完整格式:
    修饰符 返回值类型 方法名称(参数类型 参数名称, ...) {
        方法体
        return 返回值;
    }

    修饰符:现阶段的固定写法,public static
    返回值类型:也就是方法最终产生的数据结果是什么类型
    方法名称:方法的名字,规则和变量一样,小驼峰
    参数类型:进入方法的数据是什么类型
    参数名称:进入方法的数据对应的变量名称
    PS:参数如果有多个,使用逗号进行分隔
    方法体:方法需要做的事情,若干行代码
    return:两个作用,第一停止当前方法,第二将后面的返回值还给调用处
    返回值:也就是方法执行后最终产生的数据结果

    注意:return后面的“返回值”,必须和方法名称前面的“返回值类型”,保持对应。

    定义一个两个int数字相加的方法。三要素:
    返回值类型:int
    方法名称:sum
    参数列表:int a, int b

    方法的三种调用格式。

   1. 单独调用:方法名称(参数);
   2. 打印调用:System.out.println(方法名称(参数));
   3. 赋值调用:数据类型 变量名称 = 方法名称(参数);

    注意:此前学习的方法,返回值类型固定写为void,这种方法只能够单独调用,不能进行打印调用或者赋值调用。

    /*
    有参数:小括号当中有内容,当一个方法需要一些数据条件,才能完成任务的时候,就是有参数。
    例如两个数字相加,必须知道两个数字是各自多少,才能相加。

    无参数:小括号当中留空。一个方法不需要任何数据条件,自己就能独立完成任务,就是无参数。
    例如定义一个方法,打印固定10次HelloWorld。
     */

    注意事项:
    对于有返回值的方法,可以使用单独调用、打印调用或者赋值调用。
    但是对于无返回值的方法,只能使用单独调用,不能使用打印调用或者赋值调用。



0 个回复

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