Java 编程基础语法篇


前言

Java 语言的主要特性:

  • Java 语言是简单的:
Java 语言的语法与 C 语言和 C++ 语言很接近,使得大多数程序员很容易学习和使用。另一方面,Java 丢弃了 C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java 语言不使用指针,而是引用。并提供了自动分配和回收内存空间,使得程序员不必为内存管理而担忧。
  • Java 语言是面向对象的:
Java 语言提供类、接口和继承等面向对象的特性,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为 implements)。Java 语言全面支持动态绑定,而 C++语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。
  • Java 语言是分布式的:
Java 语言支持 Internet 应用的开发,在基本的 Java 应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括 URL、URLConnection、Socket、ServerSocket 等。Java 的 RMI(远程方法激活)机制也是开发分布式应用的重要手段。
  • Java 语言是健壮的:
Java 的强类型机制、异常处理、垃圾的自动收集等是 Java 程序健壮性的重要保证。对指针的丢弃是 Java 的明智选择。Java 的安全检查机制使得 Java 更具健壮性。
  • Java 语言是安全的:
Java通常被用在网络环境中,为此,Java 提供了一个安全机制以防恶意代码的攻击。除了Java 语言具有的许多安全特性以外,Java 对通过网络下载的类具有一个安全防范机制(类 ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类 SecurityManager)让 Java 应用设置安全哨兵。
  • Java 语言是体系结构中立的:
Java 程序(后缀为 java 的文件)在 Java 平台上被编译为体系结构中立的字节码格式(后缀为 class 的文件),然后可以在实现这个 Java 平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。
  • Java 语言是可移植的:
这种可移植性来源于体系结构中立性,另外,Java 还严格规定了各个基本数据类型的长度。Java 系统本身也具有很强的可移植性,Java 编译器是用 Java 实现的,Java 的运行环境是用 ANSI C 实现的。
  • Java 语言是解释型的:
如前所述,Java 程序在 Java 平台上被编译为字节码格式,然后可以在实现这个 Java 平台的任何系统中运行。在运行时,Java 平台中的 Java 解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。
  • Java 语言是高性能的:
与那些解释型的高级脚本语言相比,Java 的确是高性能的。事实上,Java 的运行速度随着 JIT(Just-In-Time)编译器技术的发展越来越接近于 C++
  • Java 语言是多线程的:
在 Java 语言中,线程是一种特殊的对象,它必须由 Thread 类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为 Thread(Runnable) 的构造子类将一个实现了 Runnable 接口的对象包装成一个线程,其二,从 Thread 类派生出子类并重写 run 方法,使用该子类创建的对象即为线程。值得注意的是 Thread 类已经实现了 Runnable 接口,因此,任何一个线程均有它的 run 方法,而 run 方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java 语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为 synchronized)。
  • Java 语言是动态的:
Java 语言的设计目标之一是适应于动态变化的环境。Java 程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java 中的类有一个运行时刻的表示,能进行运行时刻的类型检查。

一、二进制

  1. 计算机中的数据都以二进制数字保存。
  2. 二进制:逢二进一,即只有0、1两个值。

如:十进制的 10 在计算机内保存为二进制的 1010。

  1. 计算机中信息的存储单位

位(Bit):表示一个二进制数码 0 或 1,是计算机存储处理信息的最基本单位。

字节(Byte):一个字节由 8个位组成。它表示作为一个完整处理单位的 8 个二进制数码。

1.1 补码

事实上,计算机内的二进制数值是以补码形式表示的。

补码:

  • 一个正数的补码和其原码的形式是相同的。
  • 负数的补码是:将该数的绝对值的二进制形式,按位取反再加1。

由此可知,二进制补码数值的最高位(最左位)是符号位:该位为0,表示数值为正数;该位为1,表示数值为负数。

1000000000 00000000 00000000 00001010
-1011111111 11111111 11111111 11110110

主要原因:

使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。

1.2 二进制和十进制之间的互换

二进制数转换成十进制数:

按权相加:把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。

例子:

原码 101101 101101 101101 = = = 1 × 2 3 1 \times 2^3 1×23 + 0 × 2 2 +0\times2^2 +0×22 + 1 × 2 1 +1\times2^1 +1×21 + 1 × 2 0 +1\times2^0 +1×20 + 0 × 2 − 1 +0\times2^{-1} +0×21 + 1 × 2 − 2 =   +1\times2^{-2}=\, +1×22= 8 + 0 + 2 + 1 + 0 + 0.25   8+0+2+1+0+0.25\, 8+0+2+1+0+0.25 = 11.25 =11.25 =11.25

十进制数转换成二进制数:

  • 整数部分:“除2取余,逆序排列”法
  • 小数部分:“乘2取整,顺序排序”法

注意:编程时若涉及复杂的进制运算可借助计算器中的程序员模式!

在这里插入图片描述

二、变量与数据类型

变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据。由于该存储单元中的数据可以发送改变,因此得名为“变量”。

如下图:
在这里插入图片描述
因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。

2.1 变量分类

按所属的数据类型划分:

  1. 基本数据类型变量
  2. 引用数据类型变量

按被声明的位置划分:

  1. 局部变量:方法或者语句块内部定义的变量
  2. 成员变量:方法外部、类的内部定义的变量

特别注意:类的外面不能有变量的声明

2.2 数据类型

由于变量记录的数据内容大小不同,导致所需的存储单元大小不同,在 Java 语言中使用数据类型的概念加以描述。

字节是计算机信息技术用于计量存储容量的一种计量单位,作为一个单位来处理的一个二进制数字串,是构成信息的一个小单位。Java 中的字节是八位的字节,即它包含八位的二进制数。

在这里插入图片描述

类型占用内存值范围(含边界值)默认值
整数型(int)4字节-214783648 ~ 21474836470
短整型(short)2字节-32768 ~ 327670
长整型(long)8字节-9223372036854775808L ~ 9223372036854775807L0
字节型(byte)1字节-128 ~ 1270
浮点型(float)4字节-3.40292347E+38 ~ 3.40292347E+380.0f
双精度浮点型(double)8字节-1.79769313486231570E+308 ~ 1.79769313486231570E+3080.0d
布尔型(boolean)1字节true 或 falsefalse
字符型(char)2字节‘\u0000 ~ u\ffff’‘\u0000’

2.3 类型转换

boolean 类型不能转换成任何其它数据类型。

自动类型转换: 容量小的类型自动转换成容量大的数据类型。

byte,short,int -> float -> long -> double
byte,short,int 不会互相转换,它们三者在计算时会转换成 int 类型。

强制类型转换:容量大的类型转换成容量小的数据类型时,要加上强制转换符:

long l = 100L;
int i = (int)l;

注意:

有可能造成精度降低或数据溢出,使用时要小心。

2.4 关键字大全

Java 中有一些赋予特定的含义,有专门用途的字符串称为关键字(keyword),全部都为小写。
在这里插入图片描述

三、方法的使用

3.1 概述

方法用于封装一段特定的逻辑功能。方法的主要要素有:权限修饰符、方法名、参数列表和返回值。

格式:

权限修饰符 返回值类型声明 方法名称(参数列表){
	方法中封装的逻辑功能;
	return 返回值;
}

3.2 权限修饰符详解

在这里插入图片描述

3.3 返回值详解

  • 方法调用结束后可以返回一个数据,称之为返回值。
  • 方法在声明时必须指定返回值的类型。
  • 通过 return 语句返回,return 语句的作用在于结束方法且将数据返回。
  • 如果方法没有返回值(即方法不需要返回数据),需将返回值类型声明为 void。

3.4 参数列表详解

  • 方法的参数列表:在调用时传递给方法,需要被方法处理的数据。
  • 在方法定义时,需要声明该方法所需要的参数变量。
  • 在方法调用时,会将实际参数值传递给方法的参数变量。必须保证传递参数的类型和个数符合方法的声明。

3.5 方法实例

//返回较大的数
public static int max(int num1, int num2){
	return num1 > num2 ? num1 : num2;
}

四、运算符的使用

4.1 算术运算符

在这里插入图片描述

++ 运算符:
  • 如果是变量前缀:先对此变量加1,再执行其他的操作。
  • 如果是变量后缀:先执行当前语句的其他操作,再对此变量加1。
-- 运算符:
  • 如果是变量前缀:先对此变量减1,再执行其他的操作。
  • 如果是变量后缀:先执行当前语句的其他操作,再对此变量减1。

实例:

/**
 * ++和--放在变量前后的区别,注意观察运算结果
 */
public class IO_test02 {
    public static void main(String[] args) {
        int i = 3;
        System.out.println(i++);
        System.out.println(i);
        System.out.println("-----------------------");
        int j = 3;
        System.out.println(++j);
        System.out.println(j);
        System.out.println("-----------------------");
        int k = 3;
        System.out.println(k--);
        System.out.println(k);
        System.out.println("-----------------------");
        int n = 3;
        System.out.println(--n);
        System.out.println(n);

    }
}

运行结果:
在这里插入图片描述

4.2 赋值运算符

赋值运算符作用是将一个值赋值给一个变量,运算顺序从右到左。
在这里插入图片描述

4.3 关系运算符

关系运算符作用是比较两边的操作数,结果总是 boolean 型的。
在这里插入图片描述

4.4 逻辑运算符

逻辑运算符用于对 boolean 型结果的表达式进行运算,运算结果总是 boolean 型。

在这里插入图片描述

4.5 字符串连接运算符

String s = "she "+"is “+“my girl!”,结果为"she is my girl!”

"+"除了可用于字符串相连接,也能将字符串与其它的数据类型相连成一个新的字符串。

如:String s = “你好”+1024;
结果为“你好1024”

实例:

public class IO_test01 {
    public static void main(String[] args) {
        String s = "she "+"is "+"my girl!";
        System.out.println(s);
        String s1 = "你好"+"1024";
        System.out.println(s1);
    }
}

运行结果:
在这里插入图片描述

4.6 三目运算符

X?Y:Z

X为 boolean 类型表达式,先计算 x 的值,若为 true,整个三目运算的结果为表达式y的值,否则整个运算结果为表达式 z 的值。

实例:

public class IO_test01 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num1 = sc.nextInt();
        int num2 = sc.nextInt();
        System.out.println(num1>num2?num1+"大":num2+"大");
    }
}

运行结果:
在这里插入图片描述

五、变量作用域以及转义字符

5.1 变量作用域

在局部变量中,内部范围可以访问外部范围的变量,外部范围不能访问内部范围的变量。

实例1:

public class IO_test02 {
    public static void main(String[] args) {
        int a = 2,b = 3;
        {
            System.out.println(a+b);
        }
    }
}

运行结果:
在这里插入图片描述

实例2:

/**
 * 变量的作用域
 * 代码分为结构定义语句和功能执行语句,
 * 功能执行语句必须以英文分号结尾。
 */
public class IO_test01 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = a+b;
        System.out.println(c);
        say(c);
    }

    private static void say(int d) {
        System.out.println(d);
    }
}

运行结果:
在这里插入图片描述

5.2 转义字符

在这里插入图片描述

实例:

public class T8 {
    public static void main(String[] args) {
        System.out.println("乘法口诀表");
        for(int i=1;i<=9;i++){
            for (int j=1;j<=i;j++){
                System.out.print(j+"*"+i+"="+j*i+"\t");
            }
            System.out.println();
        }
    }
}

运行结果:
在这里插入图片描述


结尾(附上一份ASCII表)

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值