黑马程序员技术交流社区

标题: 技术贴 [打印本页]

作者: lyn7297790    时间: 2019-3-7 23:25
标题: 技术贴
java 5 8 11 版本 之父詹姆斯.高斯林

        1跨平台性操作系统平台
         原理:jvm  java虚拟机
       
        2jre jdk
         jre 运行环境包含jvm和核心类库
         jdk开发工具包含jre
       
        3安装
         bin指令工具
         conf环境变量

        4dos命令:
         盘名:打开盘
         cd 打开文件夹
         tab补全
         cd..退出文件夹
         dir查看文件
         cls清屏
         cd \ \打开多级文件夹
         cd\ 退回根目录
         exit退出cmd         
         
        5环境变量
         增加JAVA_HOME jdk目录
         path变量添加 %JAVA_HOME%\bin
         多版本的JDK只要修改JAVA_HOME的目录

        6步骤
         编写ctrl+s 保存
         编译
         运行
          *类名和文件名相同
          *注意中英文符号
          *英文的大小写


        bug;
         1多看 2多思考,多查资料 3 多尝试,多终结          


java 基础语法

        注释:指定位置添加的解释说明信息
         单行注释//
         多行注释/*   */
         文档注释/**  */

        关键字:java语言保留(特殊含义)的单词
         1全部小写
         2常用软件有特殊颜色
         
                           
数据类型:

         
        一常量:程序运行不能改变的量
        整型 3 浮点型 3.1 字符型 'a''我' 字符串型"abc"  布尔性true 空常量null(不能直接打印)
       
        注意两个单引号中间必须有一个且只有一个 ""也是字符串常量


       
        二数据类型:(基本类型,引用类型)
                整型        byte  +-2^(8-1)        1 有符号占一个位  00000000第一个位是符号
                        short                 2   
                        int默认                4
                        long                8
                浮点型        float                4
                        double默认        8
                字符型        char                2
                布尔型        boolean                1



        三变量:在运行中可以改变的量(存储数据    )

         定义: type 变量名 = 值 ;可以在同一行定义多个变量并赋值
         修改: 变量 = 变量值 ;
         输出: 直接输出变量名       
         
         注意: 1变量名不能重复(在作用域内)
                2变量必须赋值才能使用
                3变量名不能用关键字
                4变量值必须在类型的范围之内(L F)

       
         标识符:变量名,类名,方法名....
           1有数字,字母_ $组成
           2不能数字开头
           3不能用关键字
           4区分大小写
         规范:        小驼峰:firstName 方法和变量
                大驼峰:GoodStudent  类


        类型转换
         自动:小范围到大范围
         强制:大范围到小范围 有数据丢失
                定义: 目标类型 变量名 = (目标类型) 大范围的值;
                注意:2个byte相加先把byte转换成int在相加(自动提升更大的类型)
                      byte和double相加结果为double             
                      byte short 编译器优化:当常量赋值是编译器自动判断在不报错
                      byte =10 +20;可以通过编译器。



                                运算符

        算术运算符:对常量或者变量进行操作的符号 + - * / %
                / 整数相除得到整数要得到小数必须有浮点数               
                %应用:判断奇偶数,获取一个数的个位数获取10位的数(num/10)%10
                +  与字符相加是拿计算机底层字符码相加如1+a =(int)1+(int)97          A65  a97  0 =48
                   可以参与与字符串运算相当于字符串连接:*有运算的优先级 *与字符+直接拼接字符



        赋值运算符:给变量赋值 =  +=  -=  *=  /=  %=  &=  ^=    &^是位运算
                  i += 30; -> i=(int)(i+30) 注意 +=隐含强制类型转换
                  char a = 'b'+1 ; a结果c可以通过编译

               

        自增自减:++  --  ++i i++
                  单独使用i++和++i一样;参与运算时i++先i先操作、++i先自增后操作




        关系运算符:返回值为boolean类型  < >  <=  >=  ==  !=
                  


        逻辑运算符:换回值为布尔类型  & | ^ !  (&&  ||)短路
                &有false则false                (并且)
                | 有true则true                (或者)
                ^相同false,不同true        ()
                !取反                        ()



        三元运算符:(boolean)? a : b;  如果真返回a值;假返回b值。



        数据输入:Scanner类
                        导包 import java.util.Scanner;

                        Scanner sc = new Scanner(System.in);
                        int x = sc.nextInt();


        a = 0; t = ++a + a++ + a++ ; t=? 1+1+2
                   1 1   1 2   2 3
                        a     a    a




        流程语句:顺序结构,分支结构,循环结构


                                分支语句
       
           if语句:(1)if(boolean){...} 如果真运行括号内的代码。假跳过
                   (2)if(boolean){..1.}else{.2..}如果真运行1,假运行2
                   (3)if(boolean){..1}else if(boolean){...2} ...else{..n} 那个布尔值为真执行那个如果都为假执行else .
                总结:如果if后面只有一句可以不写{}



                       
          swicth: swicth (表达式){
                                        case 1值:{语句体 ;break ;}
                                        .....

                                        default {语句体; break; }
               
                                }
                  表达式类型是byte short char int String enum
                  swicth的穿透 case穿透case不加break。出现穿透现象,直到遇到break退出。



                                循环结构

          for循环:格式(for (初始化;条件判断;条件控制){语句体; })


          while(条件判断){语句体;}

          do (条件判断) {循环体;}while(判断语句);
         注意;1 do while 至少循环一次其他不一定循环       



                                跳转控制语句
          break:跳出循环

          continue:跳过某次循环,继续循环



                                        数组
       
        应用数据类型:
        定义格式:用于存储多个相同数据类型的工具。
                 int[]  arr ;  int  arr[] ;两种格式

        初始化:        动态初始化 ;类型[] 变量  = new 类型[数组长度];
                        int[] arr = new int[3]; new申请内存空间。

        元素访问: 数组名[索引] ,索引从0开始并且连续每次加一。索引最大是长度-1.
        默认值:整型0 浮点型 0.0 字符型空字符 布尔false 应用类型null                                                
        (局部变量)定义在方法里面的变量。栈内存
        New。在堆内存
       
        多个数组指向相同的地址,经过改变全会改变。

        静态初始化  数据类型[] 数组名 = new 数据类型[]{数据1,数据2,数据3....};
                int[] arr={1,2,3...};

        char数组特殊处理打印数字名会直接打印char的内容。




                                面向对象

        面向过程
        面向对象:类和对象



        类:现实具有共同属性行为的抽象事物集合。(描述)
        对象:某类的一个实体。
        对象的属性:对象特有的值
        对象的行为:对象能够执行的操作。
        属性:可以用具体值表示。
        行为:一系列动作组成。


        类的属性(成员变量)定义:

        类的行为(成员方法)定义:

        pubulic class 类名{成员变量 类型 变量名;...成员方法 pubulic 方法名(){ }... }


        对线的创建: 类名 对象名 = new 类名 () ;
        使用成员方法(变量):对象名.成员方法(成员变量)

        成员变量 类中 堆内存 随对象消失 有默认值
        局部变量 方法中 栈内存 随方法消失 没默认值

        封装 关键字private 权限 成员变量
        提供 get成员变量名(拿出 有换回值return) set成员变量名(赋值无换回值 =  ) 方法
       
        关键字this 修饰代表成员变量。不带默认为局部变量(同名情况)哪个对象调用就代表谁的地址



        封装(封装继承多态)


        构造方法:作用创建对象 功能完成对象的初始化。 修饰符 类名*要与类名相同*(参数){ }无参构造方法

        调用 new 类名();  有参构造可以(默认初始值)。
        没构造方法系统默认一个无参构造方法
               

        标准类 1成员变量用private修饰 2构造方法(有参,无参) 3成员方法(get,set)       


       

          学了这么多最后写一个简单的数组排序{9,8,7,6,5,4,3,2,1,0}重小到大.来说明学习的成果
          1思路 ;用数组第一个元素和第二个元素比较。如果元素2大,则交换位置在用第一个元素和第3个元素比...直到最后一个。
        第一轮下来数组为0987654321。第二轮那数组的第二元素开始做第一轮的动作直到最后,数组为0198765432。接下来往还动作。
        直到排好序。
          2什么时候停止:当数组的最后第二个和最后一个比较完了就可以停止循环,也就是外层循环到倒数第二元素就行了

        代码:
        import java.util.Arrays;
        public class PxArray {
                   public static void main(String[] args) {
                        int[] arr = {9,8,7,6,5,4,3,2,1,0};
                        for (int i = 0; i <arr.length-1 ; i++) {  //外层到倒数第二就行了
                                    for (int j = i+1; j <arr.length ; j++) {  //内层从外层下一个开始
                                        if (arr[i]>arr[j]) {   //判断大小交换位置
                                                   int temp = 0 ;
                                                   temp = arr [i];
                                                    arr[i] = arr[j] ;
                                                    arr[j] = temp ;
                                        }
                                    }
                                }
                        System.out.println(Arrays.toString(arr));
                    }
        }











欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2