Java--语法

概述

JDK Java development kit,Java的开发和运行环境,Java的开发工具(编译器 javac等)和jre
  JRE Java runtime environment Java运行环境,java运行的所需的类库+JVM(java虚拟机)

  环境变量: 让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录

  环境变量的配置:JAVA_HOME=%安装路径%\Java\jdk      path=%JAVA_HOME%\bin 

javac命令和java命令

要知道java是分两部分的:一个是编译,一个是运行

  Javac:负责的是编译的部分,当执行javac时,会启动java的编译器程序。对指定扩展名的.java文件进行编译。生成了jvm可以识别的字节码文件。也就是class文件,也就是java的运行程序。

  Java:负责运行的部分.会启动jvm.加载运行时所需的类库,并对class文件进行执行. 

  一个文件要被执行,必须要有一个执行的起始点,这个起始点就是main函数.

语法

关键字、标识符

关键字:

其实就是某种语言赋予了特殊含义的单词。 

保留关键字字:

其实就是还没有赋予特殊含义,但是准备日后要使用过的单词。

这些保留字不能用于常量、变量和任何标识符的名称

1 访问控制: private、protected、public

2 类、方法、和变量修饰符: class、extends、final、synchronized等

3 程序控制语句 :break、default、instanceof等

4 错误处理:assert、try、throw、finally等

5 包 和引用变量: import、package、this、super、void

6 基本数据类型和保留关键字: int,  goto、const、null(保留关键字)

标识符:

其实就是在程序中自定义的名词。如类名、变量名、函数名。包含 0-9 ;a-z ; _ ; $ 。

 1 数字不可以开头2  不可以使用关键字 3大小写敏感

变量、常量

常量:

程序中不会变的数据

变量:

可以被改变的数据

三种:局部变量、成员变量(非静态变量)、类变量(静态变量)

变量空间开辟的三个要素:数据类型、变量名称、变量初始化值

变量的作用域: 作用域从变量定义的位置开始,到该变量所在的那对大括号结束;

生命周期: 

  变量从定义的位置开始就在内存中活了;

  变量到达它所在的作用域的时候就在内存中消失了;

修饰符

像其他语言一样,Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:

访问控制修饰符 :public, protected, default,private

非访问控制修饰符 : final, abstract, static, synchronized

数据类型

1):基本数据类型:

简单类型 boolean  byte  char  short  int  float   long  double  void 

二进制位数 1     8    16      16    32   32      64      64        -- 

级别从低到高:byte,char,short(这三个平级)–>int–>float–>long–>double

自动类型转换:从低级别到高级别,系统自动转的;

强制类型转换:什么情况下使用?把一个高级别的数赋给一个别该数的级别低的变量;

2):引用数据类型:

数组、类、接口。

运算符

算术

+ , - , *  ,/  ,% ,++ ,-- ,+= ,-= 

%:任何整数模2不是0就是1,所以只要改变被模数就可以实现开关运算。

+:   可以做连接符。

逻辑

& , |  ,^ , ! , && , ||

 ^ : 异或 , 两边结果一样,就为false。两边结果不一样,就为true.(任何数与0进行异或操作后的结果都为该数本身。)

区别: & :无论左边结果是什么,右边都参与运算。 &&:短路与,如果左边为false,那么右边不参数与运算。

|:两边都运算。 ||:短路或,如果左边为true,那么右边不参与运算。

 & , |  ,^ ,  <<  ,>> , >>>

用于操作二进制位的运算符

>>>(无符号右移)

练习:

对两个变量的数据进行互换。不需要第三方变量。
int a = 3,b = 5;-->b = 3,a = 5;
        方法一:
            a = a + b; a = 8;
            b = a - b; b = 3;
            a = a - b; a = 5;
        方法二: 明白一个数,如果异或同一个数两次,那么就等于本身
            a = a ^ b;//
            b = a ^ b;//b = a ^ b ^ b = a
            a = a ^ b;//a = a ^ b ^ a = b;
        练习:高效的算出 2*8 = 2<<3;
View Code

语句

条件、循环

switch 后面的小括号中的变量应该是byte,char,short,int四种类型中的一种;

break:作用于switch ,和循环语句,用于跳出,或者称为结束。

continue:只作用于循环结构,继续循环用的。

方法

为了提高代码的复用性,可以将其定义成一个单独的功能,该功能的体现就是java中的函数。函数就是体现之一。

函数的作用:

1)、用于定义功能。

2)、用于封装代码提高代码的复用性。

注意:函数中只能调用函数,不能定义函数。

主函数:

1)保证该类的独立运行

2)因为它是程序的入口。

3)因为它在被jvm调用。

数组

二维数组初始化

1  int a[][] = new int[3][];

    a[0] = new int[2];

2  int a[][] = new int[3][5];

int a[][] = {{1,2}, {3,4,5,6}, {7,8,9}};

Java内存

出门左转JVM。

题目

public class Main {
    public static void main(String[] args) {
        int a = 0;
        change(a);
        System.out.println(a);
        User user = new User();
        user.id = 0;
        change(user.id);
        System.out.println(user.id);
        change(user);
        System.out.println(user.id);
        change2(user);
        System.out.println(user.id);
    }
    private static void change(int a) {
        a = 1;
    }
    private static void change(User user){
        user = new User();
        user.id = 2;
    }
    private static void change2(User user) {
        user.id = 3;
    }
}
class User {
    public int id;
}
0
0
0
3
    如果是8种基本类型,则一定是值传递,方法内改了参数值一定不会影响到方法外,即代码中的change(a)和change(user.id)
    如果是引用类型,则:如果改的是对象中某个字段的值,则方法外也会受到改变,即代码中的change2(user)
    如果是引用类型,且重新赋值,那么就是将新的地址给此引用,则方法外不会受到改变,即代码中的change(user);
View Code
下面的代码会输出什么?
public class Main {
    public static void main(String[] args) {
        B b = new B();
    }
}

class A {
    static {    System.out.println("A1");    }
    {    System.out.println("A2");    }
    public A() {
        System.out.println("A3");
    }
    {    System.out.println("A4");    }
}

class B extends A{
    static {    System.out.println("B1");    }
    {    System.out.println("B2");    }
    public B() {
        System.out.println("B3");
    }
    {    System.out.println("B4");    }
}
答案:
A1B1A2A4A3B2B4B3
注: 先执行静态,再执行非静态; 先加载父类,再加载子类;    
      非静态代码块,依赖构造器加载,会在构造器加载时先加载;
      同类代码,按顺序执行。
View Code
 Integer a = 100;
 Integer b = 100;
享元模式:像 “Integer 变量名=?” 这种形式定义的Integer变量会被放入常量池,保存了-127~128之间的所有对象,当使用Integer a = 100这种用法时,不会创建新对象,而是从共享空间中取 。

 

转载于:https://www.cnblogs.com/RobertLionLin/p/11484412.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值