摘要java

java语言的特点:
    1、简单
    2、面向对象(重要特性):java完全具备面向对象的三个基本特性:封装、继承和多态,去掉了多继承等复杂的该概念,只支持单继承
    3、分布式:jdk中包含了支持HTTP和FTP等基于TCP/IP协议的类库。java程序可凭借URL打开并访问网络上的对象,其访问方式与访问本地系统几乎完全相同
    4、结构中立:Java 程序需要在很多不同网络设备中运行,为能够使 Java 程序能在网络的任何地方运行Java 编译器编译生成了与机器结构(CPU 和操作系统)无关的字节码(byte-code)文件。任何种类的计算机,只要可以运
    行 Java 虚拟机,字节码文件就可以在该计算机上运行
    5、可移植:针对不同的CPU和操作系统java虚拟机右不同的版本,这样就可以保证相同的java字节码文件可移植到多个不同的平台上面运行
    6、解释执行:为实现跨平台,java设计成为解释执行的,即java源代码文件首先被编译成为字节码文件,这些字节码本身包含了许多编译时生成的信息,在运行时候java编译器负责将字节码文件解释成为特定的机器码进行运行
    7、健壮:java采用自动内存垃圾回收机制,程序员不再需要管理内存,从而减少内存错误的发生,提高了程序的健壮性
    8、安全:java虚拟机采用的是“沙箱”运行模式,即把java程序的代码和数据都限制在一定内存空间里执行,不允许程序访问该内存空间外的内存
    9、高性能、
    
    强制类型转换:在变量或常量之前加上"(目标类型)"实现
    引用数据类型(相当于指针类型)(复杂数据类型){含类、接口和数组声明的数据类型}

运算符(一元运算符和二元运算符)
    一元:- (取反)、++、--
    二元:+、-、*、/、%(取余)
    算数赋值运算符(一般用于变量自身的变化):+=、-=、*=、/=、%=
    关系运算符(结果是布尔类型数据):==、!=、>=、<=、< 、>
    逻辑运算符(对布尔型变量进行运算)(实际编程中优先考虑短路与或短路或):!(逻辑非)、&(逻辑与)、|(逻辑或)、  &&(短路与:如果a为false,则不计b)、||(短路或:如果a为true,则不计b)
        例子:示例代码如下:
            int i = 0;
            int a = 10;
            int b = 9;
            if ((a > b) || (i == 1)) { ①
            System.out.println("或运算为 真");
            } else {
            System.out.println("或运算为 假");
            }
            if ((a < b) && (i == 1)) { ②
            System.out.println("与运算为 真");
            } else {
            System.out.println("与运算为 假");
            }
            if ((a > b) || (a++ == --b)) { ③
            System.out.println("a = " + a);
            System.out.println("b = " + b);
            }
            上述代码运行输出结果如下:
            或运算为 真
            与运算为 假
            80 / 237
            a = 10, b = 9
            其中,第①行代码进行短路计算,由于(a > b)是 true,后面的表达式(i == 1)不再计算,
            输出的结果为真。类似地,第②行代码也进行短路计算,由于(a < b)是 false,后面的表达
            式(i == 1)不再计算,输出的结果为假。 代码第③行中在条件表达中掺杂了++和—运算,由于(a > b)是 true,后面的表达式(a++ 
            == --b)不再计算,所以最后是 a = 10, b = 9。如果把短路或(||)改为逻辑或(|),那么输
            出的结果就是 a = 11, b = 8 了。
******没怎么看=>位运算(是以二进位(bit)为单位进行运算的,操作数和结果都是整形数据):&、|、^、~、>>、<<、>>>以及相应的赋值运算符
    其他运算符:三元运算符(?:)例:x?y:z
               小括号。起到改变表达式运算顺序作用,它的优先级最高
               中括号。数组下标
               引用号(.)。对象调用实例变量或实例方法的操作符,也是类调用静态变量或静态方法的操作符
               实例:Date date = new Date(); //new运算符可以创建Date对象
                       System.out.println(date.toString()); //通过.运算符调用方法
                   赋值号(=)
                   instanceof。判断某个对象是否属于某个类
                   new。对象内存分配运算符
                   箭头(->)。java8新增加的,用来声明Lambda表达式
                   双冒号(::)。java8新增加,用于Lambda表达式中方法的引用
    运算符优先级:
            1、 . (引用号) 小括号 中括号
            2、 ++ -- -(数值取反) ~(位反) !(逻辑非) 类型转换小括号
            3、 * / %
            4、 + - 5 << >> >>>
            6、 < > <= >= instanceof
            7、 == !=
            8、 &(逻辑与、位与) 9 ^(位异或)
            10、 |(逻辑或、位或)
            11、 &&
            12、 ||
            13、 ?:
            14、 ->
            15、 = *= /= %= += -= <<= >>= >>>= &= ^= |  

        大体顺序,从高到低:算数运算符-> 位运算符-> 关系运算符-> 逻辑运算符-> 赋值运算符 

控制语句
    分支语句:if和switch(表达式计算结果只能是int、byte、short和char类型,不能是long更不能其他类型)
    循环语句:while、do-while和for 另外java5之后推出for-each循环语句
    跳转语句:break、continue、return和throw
    for-each实例:
        假设有一个数组,采用 for 语句遍历数组的方式如下:
        //
        int[] nums ={ 43, 32, 53, 54, 75, 7, 10};

        System.out.println("----for-------");
        //
        for(int i = 0;i<nums.length;i++){
            System.out.println("Count is:" + nums[i]);
        }

        那么采用 for-each 循环语句遍历数组的方式如下:
        // 声明并初始化int数组
        int[] nums = { 43, 32, 53, 54, 75, 7, 10 };
        System.out.println("----for each----");
        // for-each语句
        for (int item : nums) {
        System.out.println("Count is:" + item);
        }
    break 语句有两种方式:带有标签和不带标签
        break; //不带标签
        break label; //带标签,label是标签名
           实例:    
                不带标签的:
                int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
                for (int i = 0; i < numbers.length; i++) {
                 if (i == 3) {
                 //跳出循环
                 break;
                 }
                 System.out.println("Count is: " + i);
                }
                结果如下:
                Count is: 0
                Count is: 1
                Count is: 2
                带标签的:
                label1: for (int x = 0; x < 5; x++) { ①
                 for (int y = 5; y > 0; y--) { ②
                 if (y == x) {
                 //跳转到label1指向的循环
                 break label1; ③
                 }
                 System.out.printf("(x,y) = (%d,%d)", x, y);
                 // 打印一个换行符,实现换行
                 System.out.println();
                 } }
                System.out.println("Game Over!");
                运行结果如下:
                (x,y) = (0,5)
                (x,y) = (0,4)
                (x,y) = (0,3)
                (x,y) = (0,2)
                (x,y) = (0,1)
                (x,y) = (1,5)
                (x,y) = (1,4)
                (x,y) = (1,3)
                (x,y) = (1,2)
                Game Over!
                如果 break 后面没有指定外循环标签,则运行结果如下:
                (x,y) = (0,5)
                (x,y) = (0,4)
                (x,y) = (0,3)
                (x,y) = (0,2)
                (x,y) = (0,1)
                (x,y) = (1,5)
                (x,y) = (1,4)

数组:
    基本特性:1、一致性:数组只能保存相同数据类型的元素
             2、有序性:数组中的元素是有序的,可通过下标访问
             3、不可变性:数组一旦初始化,则长度(数组中元素的个数)可不变
             在java中数组下标是从零开始的,java数组下标访问运算符是中括号,如intArray[0],表示访问intArray数组的第一个元素,0是第一个元素的下标。
             java中的数组本身是引用数据类型,它的长度属性是length。
             数组又可以分为一维数组和二维数组
                 一维数组:数组中每个元素都是带一个下标时,就是一维数组。数组时引用数据类型,引用数据类型在使用之前一定要做:声明和初始化
                    数组声明:宣告这个数组中元素类型,数组的变量名
                        语法如下:元素数据类型[] 数组变量名;(推荐采用)
                                 元素数据类型 数组变量名[];
                    数组初始化:静态初始化和动态初始化
                        静态初始化:        举例:    int[] intArray;
                                        //静态初始化int数组
                                        intArray = {21,32,43,45};
                                        String[] strArray;
                                        //静态初始化Stirng数组
                                        strArray = {"张三","李四","王五","董六"};
                                        //声明同时初始化数组
                                        int intArray[] = {21,32,43,45};
                                        String strArray[] = {"张三","李四","王五","董六"};
                                当不知道元素有多少,更不知道元素的内容,可采用动态初始化        
                        动态初始化:(动态初始化使用new运算符分配指定长度的内存空间)    
                                        int intArray[];
                                        // 动态初始化int数组
                                        intArray = new int[4]; ①
                                        intArray[0] = 21;
                                        intArray[1] = 32;
                                        intArray[2] = 43;
                                        intArray[3] = 45; ②
                                        // 动态初始化String数组
                                        String[] stringArray = new String[4]; ③
                                        // 初始化数组中元素
                                        stringArray[0] = "张三";
                                        stringArray[1] = "李四";
                                        stringArray[2] = "王五";
                                        stringArray[3] = "董六"; ④
                            new分配数组内存空间后,数组中的元素内容是:数组类型的默认值,不同类型默认值不同
                            
                            ******数组合并    
                二维数组声明:            
                    元素数据类型[][] 数组变量名;
                    元素数据类型 数组变量名[][];
                    元素数据类型[] 数组变量名[];
                二维数组的初始化:动态与静态    
                    静态初始化示例:
                        示例:int intArray[][] = { { 1, 2, 3 }, { 11, 12, 13 }, { 21, 22, 23 }, { 31, 32, 33 } };
                        上述示例,创建并初始化了一个 4×3 二维数组
                    动态初始化语法:
                        new 元素数据类型[高维数组长度] [低维数组长度] ;
                        示例:int[][] intArray = new int[4][3];

                        示例:
                        public class HelloWorld {
                            public static void main(String[] args) {
                            // 静态初始化二维数组
                            int[][] intArray = { 
                            { 1, 2, 3 }, 
                            { 11, 12, 13 }, 
                            { 21, 22, 23 },
                            { 31, 32, 33 } };
                            // 动态初始化二维数组
                            double[][] doubleArray = new double[4][3];
                            // 计算数组intArray元素的平方根,结果保存到doubleArray
                            for (int i = 0; i < intArray.length; i++) {
                            for (int j = 0; j < intArray[i].length; j++) {
                            // 计算平方根
                            doubleArray[i][j] = Math.sqrt(intArray[i][j]); ① }
                            } 
                            // 打印数组doubleArray
                            for (int i = 0; i < doubleArray.length; i++) {
                            for (int j = 0; j < doubleArray[i].length; j++) {
                            System.out.printf("[%d][%d] = %f", i, j, doubleArray[i][j]);
                            System.out.print('\t');
                                    }
                            System.out.println();
                                    } 
                                }
                            }
                        其中:Math.sqrt(intArray[i][j])表达式是计算平方根,Math是java.lang包中提供的用于数学计算类,它提供很多常用的数学计算方法,sqrt是计算平方根,如取绝对值的abs、幂运算的pow等


面向对象        
    三大基本特性:1、封装性
                2、继承性
                3、多态性
        1.1类
        1.1.1 类声明:类声明和类体
            [public][abstract|final] class className [extends superclassName] [implements interfaceNameList] {
            //类体
            }
            class是声明类的关键字,className 是自定义的类名;class 前面的修饰符 public、
            abstract、final 用来声明类。
            superclassName 为父类名,可以省略,如果省略则该类继承 Object 类,Object 类所有类
            的根类,所有类都直接或间接继承 Object;interfaceNameList 是该类实现的接口列表,可
            以省略,接口列表中的多个接口之间用逗号分隔。
            类体是类的主题,包括数据和操作,即成员变量和成员方法
        1.1.2 成员变量        
            声明类体中成员变量语法格式如下:
            class className {
            [public | protected | private ] [static] [final] type variableName; //成员变量
            }
            type是成员变量数据类型,variableName是成员变量名。type前的关键字都是成员变量修饰符
            1. public、protected 和 private 修饰符用于封装成员变量。
            2. static 修饰符用于声明静态变量,所以静态变量也称为“类变量”。
            3.final修饰符用于声明变量,该变量不能被修改
        1.1.3成员方法    
                class className {
 [public | protected | private ] [static] [final | abstract] [native] [synchronized] 
type methodName([paramList]) [throws exceptionList] {
 //方法体
 } }
 navite修饰方法,称为本地方法,本地方法调用平台本地代码,不能实现跨平台
 synchronized修饰的方法是同步的,当多线程方式同步方法时,只能串行地执行,保证是线程安全的。
 方法声明中还有(【paramList】)部分,它是方法的参数列表。throws exceptionList是声明抛出异常列表


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

许豪平安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值