Java 程序设计 第2章 Java基本语法 笔记

简介: Java 程序设计 第2章 Java基本语法 笔记

第2章 Java基础语法

介绍了Java的基本语法,包括关键字、标识符、基本数据类型等。

本章是Java语言的基础。

如果你学过C语言或C++的话,看这章会很快,因为Java和C++太相似了。


2.1 标识符与关键字

2.1.1 标识符(identifier)

标识符是以字母、下划线、$开始的一个字符序列,后面可以跟字母、数字、下划线、美元符$。

Java对大小写敏感。

标识符的命名有一些常用的约定: //是约定不是规定。

(1)常亮用大写字母命名,如PI,RED

(2)类名用大写字母开头,如Area

(3)变量名、对象名、方法名等用小写字母,如果有多个单词,则用首字母大写区分,如speedCar。

2.1.2 关键字(keyword)

和C语言的关键字基本相同;

关键字不需要单独记忆。

 

2.2 数据与数据类型

与C/C++基本相同。

需要注意Java中布尔型只能进行逻辑运算,不能进行算术运算。

2.3 常量和变量

2.3.1 常量

常量即程序执行过程中不变的量。

可以使用标识符表示常量,称为符号常量。

符号常量的声明

final [修饰符] 数据类型 变量名=[初始值];

说明:

修饰符限定常量的使用范围,如public,private,修饰符可以省略。

符号常量举例:

final double PI = 3.1415926;
 
final int MAX = 1000;
 
常量不一定定义时赋值,可以但只能赋值一次。
 
final int j;
 
j = 20 //允许,第一次赋值
 
j = 30;//不允许,因为前面已经赋值过了。

2.3.2 变量

变量指在程序运行过程中值可以改变的量。

1.变量的定义:

变量定义的语法:

[修饰符] 数据类型 变量名[=值];                               //定义一个变量

[修饰符] 数据类型 变量名1[=值], 变量名2[=值], ...; //定义多个变量

2.变量的初始化与赋值

变量的赋值语法:

变量名= 值;

举例:

private int age = 18;
 
char x = 'a',Y;
 
boolean t = false;
 
public String s1 = "Abcdefg", s2;

在Java中,变量如果没有初始化,编译器会提供初始值。(0,false)

3.变量的类型转换

 

4.变量的作用域

变量的作用域与他定义的位置修饰符有关。

变量的位置:1.在类块中定义,为成员变量

                    2.在函数中定义,为局部变量。

              如:

class ClassA{
 
       int m_a = 20; //成员变量
 
    public static void main(String[] args) {
 
      int a = 30 ;//局部变量
 
 }
 
}

修饰符:static

用static修饰的变量为类变量(或称为静态变量)。static只能修饰类块中定义的变量(成员变量)。

类变量作用域是整个类,可以直接用“类目.变量名”引用,而不用产生类的具体实例。

 

2.4 基本输入与输出

2.4.1 数据的输入

1.标准输入

(1)System.in.read()

(2)System.in.read(byte buffer[], int start, int size);

read()是通过标准输入流从键盘读入一个字节;(2)是一次性读入多个字节,放入buffer中,

使用read()方法时,必须使用“异常处理”机制,在main方法的末尾加一个throws IOException。//IOException在java.io包中

import java.io.*;
 
public class Example2_1 {
  public static void main(String args[]) throws IOException{
    char c;
    System.out.println("请输入一个字符:");
    c = (char)System.in.read();
    System.out.println("输入的字符是:"+c);
  }
 
}
import java.io.*;
public class Example2_2 {
  public static void main(String args[]) throws IOException{
    int x,y;
    System.out.println("请输入一个0~9的数:");
    x = (int)System.in.read();
    y = x - 48;
    System.out.println("输入的字符是:"+x);
  }
}

System.in.read()得到的是字符对应的Unicode编码,要进行一定处理才能变成相应的数值。

 

2.利用Scanner类输入(比较好用)

使用Scanner创建一个对象接受键盘输入。

Scanner类在包java.util中。

import java.util.*;
public class Example2_3 {
  public static void main(String args[]) {
    System.out.print("请输入一个整数:");
    Scanner s = new Scanner(System.in);
    int a = s.nextInt();
    System.out.println("输入的数为:"+a);
  }
}

程序使用nextInt()读入一个整数,类似的有nextLong、 nextFloat 、nextDouble 、nextBoolean等

如果想输入字符串,可以使用nextLine

 

3.命令行参数(略)

 

 

2.4.2 数据的输出

1.标准输出

(1)System.out.print(表达式);

(2)System.out.println(表达式);

二者的区别:(2)会在输出结果后自动产生一个回车换行。

2.格式化输出

System.out.printf() //类似C语言的printf()

 

补充:图形化输入输出

通过文本框输入,标签输出,按钮执行

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
public class graphInOut {
  public static void main(String args[])
  {
    new AppFrame();
  }
}
class AppFrame extends JFrame
{
  JTextField in = new JTextField(10);
  JButton btn = new JButton("求平方");
  JLabel out = new JLabel("用于显示结果的标签");
  public AppFrame()
  {
    setLayout(new FlowLayout());
    getContentPane().add(in);
    getContentPane().add(btn);
    getContentPane().add(out);
    btn.addActionListener(new BtnActionAdapter() );
    setSize(400,100);
    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    setVisible(true);
  }
  class BtnActionAdapter implements ActionListener
  {
    public void actionPerformed(ActionEvent e)
    {
      String s = in.getText();
      double d = Double.parseDouble(s);
      double sq = d*d;
      out.setText(d+"的平方是:"+sq);
    }
  }
      
}

Java8中的按钮动作设置可以写成更简单的形式

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
public class graphInOut {
  public static void main(String args[])
  {
    new AppFrame();
  }
}
class AppFrame extends JFrame
{
  JTextField in = new JTextField(10);
  JButton btn = new JButton("求平方");
  JLabel out = new JLabel("用于显示结果的标签");
  public AppFrame()
  {
    setLayout(new FlowLayout());
    getContentPane().add(in);
    getContentPane().add(btn);
    getContentPane().add(out);
    btn.addActionListener(e->{  //使用e->{}
      String s = in.getText();
      double d = Double.parseDouble(s);
      double sq = d*d;
      out.setText(d+"的平方是:"+sq);
    });
    setSize(400,100);
    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    setVisible(true);
  }
  
 
      
}

2.5 运算符和表达式(和C基本相同,略)

 

2.6 程序流程控制(和C基本相同,略)

 

2.7 数组

在Java中,数组是一种特殊的对象。Java数组的创建使用关键字new,为数组分配内存。

2.7.1 一维数组

1.一维数组的声明与创建

一维数组的声明格式:

(1)类型 数组名[];


(2)类型[] 数组名;

实例:int a[];

          float[] b;

一维数组的创建格式:

数组名 = new 类型[数组长度];

例如:a = new int[5];

通常数组的声明和创建合在一起:

int a[] = new int[5];

 

数组一旦创建,就不能改变长度。

2.一维数组的赋值

创建数组后,会自动给每个数组元素赋一个初始值。

也可以自己给元素赋值:

(1)在声明数组时进行初始化赋值、

如:int a[] = {1,2,3,4,5}

(2)在声明和创建数组之后,给每个元素赋值。

如:int a[] = new int[5];

a[0] =1;a[1] = 2;...a[4] = 5;

3. 一维数组的应用

一维数组元素的使用:

数组名[下标]

获得数组元素个数:

a.length

 

2.7.2 二维数组

称二维数组为数组的数组。

1.二维数组的声明与创建

二维数组声明:

类型 数组名[][];

例:int a[][];

创建:

a = new int[2][3];

另一个分配形式:

int c[][] = new int[2][];

c[0] = new int [3];

c[1] = new int[4];

 

二维数组的各行长度可以不同。

二维数组的赋值

(1)逐个元素进行赋值

(2)初始化赋值 如:int a[][] = {{1,2,3},{2,3,4}};

 

二维数组的应用

 

2.7.3 数组的操作

1.数组排序(冒泡排序、选择排序等)

2.数组复制 Java的System类提供了复制数组的方法,格式如下:

System.arraycopy(原数组,源位置,目标数组,目标位置,复制数量);

 

 

2.8 方法

在面向对象语言中,对象的行为都是以方法实现的,通常一个方法完成一个功能。

在其他语言中,方法被称为函数。

2.8.1 方法的定义

[修饰符] 返回值类型 方法名([形参表]) [throws异常列表]

{

}

说明:修饰符制定方法的使用范围,可以是public,private等

2.8.2 方法的调用

方法名(实参表)

2.8.3 参数传递的方式

1.值传递:参数为简单数据类型时,传递值。

2.地址传递 当参数为复合数据类型时,对形参的访问相当于对实参的访问,形参被认为是实参的别名。

2.8.4 方法的重载

可以有多个同名的函数,但参数不同,调用时选择参数匹配的一个。

2.8.5 嵌套与递归

一个方法内调用另一个方法叫嵌套。

递归是自己调用自己。


相关文章
|
4天前
|
前端开发 Java 图形学
[笔记] 疯狂JAVA讲义(第3版)第11章 AWT编程
[笔记] 疯狂JAVA讲义(第3版)第11章 AWT编程
|
4天前
|
Java 索引
[笔记] 疯狂JAVA讲义(第3版)第4章 流程控制与数组
[笔记] 疯狂JAVA讲义(第3版)第4章 流程控制与数组
|
4天前
|
Java 程序员 API
[笔记] 疯狂JAVA讲义(第3版)第3章 数据类型和运算符
[笔记] 疯狂JAVA讲义(第3版)第3章 数据类型和运算符
|
4天前
|
数据可视化 Java 测试技术
[笔记] 疯狂JAVA讲义(第3版) 第2章 理解面向对象
[笔记] 疯狂JAVA讲义(第3版) 第2章 理解面向对象
|
4天前
|
IDE Oracle Java
[笔记] 疯狂JAVA讲义(第3版) 第1章 Java语言概述与开发环境
[笔记] 疯狂JAVA讲义(第3版) 第1章 Java语言概述与开发环境
|
4天前
|
存储 设计模式 前端开发
[笔记] 疯狂JAVA讲义(第3版)第12章 Swing编程
[笔记] 疯狂JAVA讲义(第3版)第12章 Swing编程
|
4天前
|
Java 编译器
[笔记] 疯狂JAVA讲义(第3版)第10章 异常处理
[笔记] 疯狂JAVA讲义(第3版)第10章 异常处理
|
4天前
|
Java 编译器
[笔记] 疯狂JAVA讲义(第3版)第9章 泛型
[笔记] 疯狂JAVA讲义(第3版)第9章 泛型
|
4天前
|
存储 算法 安全
[笔记] 疯狂JAVA讲义(第3版)第8章 Java集合(二)
[笔记] 疯狂JAVA讲义(第3版)第8章 Java集合(二)
|
4天前
|
存储 算法 Java
[笔记] 疯狂JAVA讲义(第3版)第8章 Java集合(一)
[笔记] 疯狂JAVA讲义(第3版)第8章 Java集合(一)