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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

错不了先生

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© 错不了先生 初级黑马   /  2017-12-23 08:20  /  729 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

01.Java概述与语法

作者: 风离紫竹

java发展概述
一、
Java由SUN公司研发,SUN 被 Oracle 收购
Java 由1995年发布,正式版本由1996年1月发布(jdk1.0)
Java之父: James Gosling

二、
面向对象
分布式
多线程
简单化
安全
跨平台移植  ------    JVM   Java Virtual Machine Java虚拟机

三、
JavaSE  Java Standard Edition : Java标准版本
JavaEE Java Enterprise Edition : Java企业版本
JavaME Java Micro Edition : Java微型版    ----------------  Android


四、搭建开发环境
JVM   Java Virtual Machine Java虚拟机 : 用于与操作系统进行交互

JRE   Java Runtime Enviroment Java运行环境: JVM  +    Java核心类库
JDK  Java Development Kit Java开发工具包 : JRE  +  Java开发工具集(java.exe  javac.exe  javadoc.exe)

2.
①下载安装JDK
②通过命令提示符到JDK安装路径的bin路径下,执行 javac
③配置path环境变量:JDK安装路径的bin路径下
        流程:先在当前路径下找是否有 javac.exe,若没有再到 path 环境变量中从前往后依次查找
        目的:在任意路径下执行 javac   
④JAVA_HOME :  JDK安装根路径

五、开发第一个应用程序

步骤:
①创建一个 .java 结尾的文件,被称为 java源文件。 如:  【HelloWorld.java】

    public class HelloWorld{
        public static void main(String[] args){
            System.out.println("HelloWorld!");
        }
    }

②编译: 通过 javac + 源文件名称 命令进行编译, 生成一个或多个 .class 字节码文件。 如:【javac HelloWorld.java】
③运行: 通过 java + .class 字节码文件名 命令进行运行。(JVM会将一个或多个.class 字节码文件加载到内存中)。  如:【java HelloWorld】

2. 开发第一个应用程序的注意:
①以  .java 结尾的文件,被称为 java源文件。
②一个 .java 源文件中可以有多个类,但是,只能有一个 public 修饰的类
③public 修饰类的名称必须与 .java 源文件名称一致
④每条语句以 “;” 结束
⑤Java 严格区分大小写


六、注释语句: 不会被JVM解释执行的语句
//单行注释

/*
    多行注释:不能嵌套
*/

/**
    文档注释: 可以通过  javadoc -d mydoc -author -version HelloWorld.java 命令生成说明文档
*/


Java基础语法
一、
标识符:凡是自己命名的地方都叫标识符。 如: 包名、类名、接口名、方法名、变量名、常量名

关键字:被Java赋予了特殊含义的单词。



1. 命名的规则 (必须遵守,若不遵守编译不能通过)
①可使用 字母  A-Z  a-z  数字 0-9   特殊字符  下划线 "_" 和  美元符 “$”
②数字不能开头
③其中不能包含空格
④不能使用关键字和保留字,但是可以包含关键字和保留字
⑤Java严格区分大小写,但是长度无限制。

2. 命名的规范 (可以不遵守,但是会收到鄙视)
①包名: 所有字母都小写。 如: xxxyyyzzz
②类名、接口名:若出现多个单词,每个单词首字母都大写。如: XxxYyyZzz
③方法名、变量名: 若出现多个单词,第一个单词的首字母小写,其余单词首字母都大写。如: xxxYyyZzz
④常量名: 所有字母都大写,每个单词之间以 "_" 分隔。 如: XXX_YYY_ZZZ


二、
变量:用于保存数据

局部变量  &  成员变量

1. 变量的格式:   数据类型   变量名   =   值;
    //声明一个变量
    数据类型  变量名;    如:  int var;

    //为变量赋值
    变量名 =  值;    如: var = 10;

    //声明一个变量并赋值
    int var = 10;

2. 变量的概念:
    ①在内存中开辟一块内存空间
    ②该空间有名称(变量名)有类型(数据类型)
    ③变量可以在指定的范围内不断的变化

3. 变量的注意:
    ①作用域:变量作用在所属的那对 {}  内
    ②局部变量在使用前必须赋初始值
    ③先声明,后使用

三、进制之间的转换(了解)

四、变量的数据类型
基本数据类型(8种):
    整型: byte(8位)  short(16位)  int(32位)-默认类型 long(64位)
    浮点型: float(32位)  double(64位)---默认类型
    字符型: char(2个字节---16位)
    布尔型: boolean

引用数据类型:
    |---类(class)   --------------------  String 字符串
    |---接口(interface)
    |---数组([])

声明变量的注意:
    ①声明 long 型变量,值后需要加 L 或 l .  如:  long l = 123456l;    long l1 = 123456L;
    ②声明 float 型变量,值后必须加 F 或 f 。 如: float f = 15.6f;
    ③声明 double 型变量,值后可以加 D 或 d 。  如: double d1 = 167.7D;
    ④声明 char 型变量,值必须使用单引号。只能存储单个字符
       存储 Unicode 编码(ASCII 、 中文、日文、特殊字符等等)

    ⑤声明 String 变量,值必须使用双引号


五、变量的运算

数据类型的转换:

自动类型转换(自动升级):小容量转大容量。(系统自动完成)
    ①byte  short  char   --->   int  --->  long  ---> float  --->  double
    ②byte short  char  三者之间不进行运算,若运算自动提升成 int 再做运算
            char c1 = 'A';
            char c2 = 'B';
            int i = c1 + c2;
    ③boolean 不参与运算

    ④String与任何基本数据类型使用连接符(+) 进行运算,都将自动串接成 String 类型

强制类型转换:大容量转小容量。需要使用强转符 "(需要转换的类型)"
                   但是可能损失精度。

六、运算符

算数运算符 :  +   -   +   -   *   /  %   前++  后++  前--  后--   +(连接符)

//除法
int a = 12;
int b = 5;
int c = a / b; //2

//取模
int c = 12 % 5;

//前后++
int i = 10;
int j = i++;
System.out.println(i);//11
System.out.println(j);//10

System.out.println(++i);

int i = 10;
i = i++; //10

赋值运算符:  =   +=   -=   *=   /=   %=
int i = 10;
i += 5; //i = i + 5;
System.out.println(i); //15

【面试题】
short s = 5;
s = s + 1;//编译?  NO

s += 1; //编译? YES      s = (short)(s + 1);

比较运算符(关系运算符) :  ==    !=  >    <    >=   <=  (运算后结果都为 boolean 型)
int a = 10;
int b = 20;
boolean b1 =  a == b;

逻辑运算符: && -短路与   ||-短路或   !-逻辑非    &-逻辑与   |-逻辑或   ^-异或  (运算后结果都为 boolean 型)
//需求:判断一个数是否大于10 小于20
int a = 10;
//10 < a < 20; 错误的做法
boolean b2 = a > 10 && a < 20;

【面试题】 && 和  &  的区别?
&& : 称为短路与,当左边表达式结果为 false 时,右边表达式将不再运算
& : 是位运算符,当用于逻辑运算时,无论左边表达式结果为true还是false,右边都运算

位运算符 :  ~    |   &  ^    <<  >>   >>>   注意:没有 <<<


三元运算符(三目运算符)

    条件表达式  ?  表达式1  :  表达式2;

    ①当条件表达式结果为 true 时,执行表达式1 ,否则执行表达式2
    ②表达式1和表达式2的结果类型需要保持一致!




一、流程控制:

顺序结构


分支结构

    条件判断:

            if(条件表达式){
                //当条件表达式结果为 true 时,需要执行的语句           
            }


            if(条件表达式){
                //当条件表达式结果为 true 时,需要执行的语句           
            }else{
                //当条件表达式结果为 false 时,需要执行的语句           
            }


            if(条件表达式1){
                //当条件表达式1 结果为 true 时,需要执行的语句           
            }else if(条件表达式2){
                //当条件表达式2 结果为 true 时,需要执行的语句           
            }else if(条件表达式3){
                //当条件表达式3 结果为 true 时,需要执行的语句
            }
            ……
            else{
                //当上述条件表达式结果都为 false 时,需要执行的语句           
            }

            注意:
                ①当某个条件表达式结果为true, 执行相应的语句,其他 else if 将不再执行
                ②if-else 语句可以嵌套的


    选择结构:

            switch(表达式){
                case 值1 :
                    //执行的语句
                    break;
                case 值2 :
                    //执行的语句
                    //break;
                case 值3 :
                    //执行的语句
                    break;
                ……
                default :
                    //执行的语句
                    break;           
            }

            注意:
                ①表达式结果的数据类型,只能是 byte  short  char  int  枚举   String(jdk1.7后)
                ②表达式结果的数据类型要与case后值的类型需要保持一致!
                ③default 是可选的
                ④break 也是可选的,若与某个case后的值匹配成功,依次向下执行,直到遇到break为止。'
                ⑤case 后只能写常量值,不能写表达式


                //需求:若一个数大于2 小于5  打印 “2-5”
                int i = 2;
                switch(i){
                    case 1:
                        System.out.println("一");
                        break;
                    case 2:
                    case 3:   
                    case 4:                           
                    case 5:
                        System.out.println("2-5");
                        break;                                   
                }


循环结构:

①初始化值
②循环条件
③迭代条件
④循环体

    for(① ; ② ; ③){
        ④   
    }

    ①②④③②④③②④③②……④③②



    ①
    while(②){
        ④
        ③
    }


    ①
    do{
        ④
        ③
    }while(②);   

while 和 do-while 的区别?
while : 先判断循环条件,再执行循环体
do-while : 先执行循环体,再判断循环条件。(至少执行一次)   

二、嵌套循环: 一个循环充当了另一个循环的循环体

打印100以内的质数:

boolean flag = true;
for(int i = 2; i <= 100; i++){
    for(int j = 2; j < i; j++){
        if(i % j == 0){
            flag = false;
            break;
        }
    }

    if(flag){
        System.out.println(i);   
    }

    flag = true;
}

三、特殊流程控制语句
break: 结束“当前”循环 。当用于switch-case语句时,用于结束当前 switch-case 语句
continue:  结束“当次”循环


label:for(int i = 0; i < 100; i++){
    for(int j = 0; j < 100; j++){
        if(j == 13){
            System.out.println(j);
            break label;
        }
    }

}




02.方法的声明和使用

作者: 风离紫竹

方法的声明和使用
一、方法:也叫函数,是一个功能的定义。是一个类中最基本的功能单元

//需求: 计算一个数 * 2 + 1 的结果
int a = 10;
System.out.println(a * 2 + 1);

a = 5;
System.out.println(a * 2 + 1);

a = 8;
System.out.println(a * 2 + 1);


1.方法的格式:

修饰符  返回值类型  方法名(参数列表){
    //功能语句

    return 返回值;
}

返回值类型:说明方法运行后有结果,那个结果的数据类型。
参数列表:就是局部变量,可以有0个或多个,每个参数之间以 “,” 分隔
return : 用于结束当前方法
返回值:方法运行结束后,返回具体结果的值


public static int result(int a){ //形式参数: 用于接收调用者传递的实际参数
    return a * 2 + 1;
}


result(10);//实际参数

2. 方法的注意:
①“返回值类型”与 “返回值”的数据类型需要保持一致
②调用方法通过方法名和参数列表,注意方法名和参数列表(参数的个数、参数的类型)必须一致
③若声明了“返回值类型”说明该方法运行后有结果,若调用者需要用到该结果
   可以声明同类型变量接收。
④若方法运行结束后,不需要返回任何结果给调用者时,方法“返回值类型”处声明为 void
    void : 表示没有返回值
⑤方法中只能调用方法,不能声明其他方法


3. 声明方法的两点明确
①方法是否需要返回结果给调用者
    明确是否需要返回值类型,返回值类型是什么
②方法是否有未知的数据参与运算
    明确是否需要参数列表,需要几个


二、跨类调用方法:
    通过“类名.方法名" 方式调用。 (暂时使用static修饰的方法为例)   
一、参数的值传递

基本数据类型:将基本数据类型作为参数,传递给方法,方法运行结束后,原值不会发生改变

        //改变两个数的值
        public static void add(int a, int b){
            a += 1;
            b += 2;      
        }

        public static void main(String[] args){
            int a = 10;
            int b = 20;

            add(a, b);

            System.out.println("a=" + a + " b=" + b);//a=10, b=20
        }


引用数据类型:
方法重载 Overload :
前提:在同一个类中
①方法名相同
②参数列表不同(参数的个数、参数的类型)
注意:与返回值类型无关



public void show(char c, int a){}


public void show(int a, char c){}

public void show(int a, char c, double d){}

public void show(String str, int a){}

public void shows(char c, int a){}

0 个回复

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