博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java--语法
阅读量:5100 次
发布时间:2019-06-13

本文共 4189 字,大约阅读时间需要 13 分钟。

概述

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;}0003    如果是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

你可能感兴趣的文章
AT&T汇编语言及其寻址方式
查看>>
ubuntu下 java、mysql、tomcat(ssl认证) 配置
查看>>
linux命名详解及其软件安装实例
查看>>
查看iOS沙盒(SanBox)文件
查看>>
数据结构与算法
查看>>
顺时针打印矩阵
查看>>
[转载]Chrome 与 Chrome OS 各版本下载集合
查看>>
面试微软前必须要读的十本书
查看>>
hadoop的安装和配置
查看>>
spinnaker
查看>>
hdu 1599 find the mincost route(无向图的最小环)
查看>>
转载:解读CSS布局之-水平垂直居中(2)
查看>>
第十八章 30限制数组越界
查看>>
浅谈unique列上插入重复值的MySQL解决方案
查看>>
hdu 4859(思路题)
查看>>
11.2.0.4 sql*loader/oci direct load导致kpodplck wait before retrying ORA-54
查看>>
sql server 2008空间释放
查看>>
团队-科学计算器-最终总结
查看>>
树的遍历 TJUACM 3988 Password
查看>>
UVA 725 - Division
查看>>