JAVA程序设计(2.结构化程序设计基础)

前言
本文是结合《Java程序设计》(黄岚、王岩、王康平)的摘要与上课ppt的笔记。


  • Java采用Unicode字符集表示标识符
  • Unicode采用16-bit存储格式

2.结构化程序设计基础

2.1 标识符、关键字和数据类型

2.1.1 标识符

  • Java标识符以数字、字母、下划线(_)和美元$组成
  • 首位不能是数字
  • 区分大小写
  • 关键字不可做为标识符
ctrl+shift+f 格式化

转义字符表:

转义字符 名称 作用
\b 退格
\t 水平制表 相当于按Tab键(自动换行)
\n 换行 换到当前位置的下一行,而不会回到行首
\r 回车 回到当前行的行首,而不会换到下一行,如果接着输出的话,本行以前的内容会被逐一覆盖
\" 双引号
\’ 单引号
\\ 反斜线

【例2.1:显示转义字符示例】

public class san316 {
    
    
	public static void main(String[] args) {
    
    
		System.out.print("1");//接入数字是为了看起方便
		System.out.println("2");
		System.out.print("\r\n3");
		System.out.print("\"4");
		System.out.print("\t5");
		System.out.print("\'6");
		System.out.println("");//表示打印一个换行符,相当于System.out.print("\n");
		System.out.print("\\7");

	}
}

输出:

12

3"4    5'6
\7

由此我们还可以明显看到println自带换行;print不提供自动换行

2.1.2 关键字

标识符可以包含关键字
下图中:
goto 和 const是保留字,其他是关键字
在这里插入图片描述

2.1.3 数据类型

在这里插入图片描述

  1. 基础数据
    基本数据类型(都是小写)
    • 整数类型(byte-8bits;short-16bits;int-32bits;long-64bits)
    • 浮点类型(float-32bits;double-64bits)
    • 字符类型(char-16bits):字符型数据必须用单引号括起来,字符串数据必须用双引号括起来
    • 布尔类型(boolen-True/False):逻辑类型不能进行直接转换

基本数据类型的封装类型:是为了支持数据类型之间的转换(首字母大写)

  • Integer:是基本数据类型int的封装类
    继承关系:java.lang.Object——>java.lang.Number——>java.lang.Integer

  • Float:float的封装类
    继承关系:java.lang.Object——>java.lang.Number——>java.lang.Float

  • Chracter:char的封装类
    继承关系:java.lang.Object——>java.lang.Character

  • Boolean:boolean的封装类
    继承关系:java.lang.Object——>java.lang.Boolean

  1. 其他引用数据类型
    • 接口
    • 数组类型

2.1.4 常量

引用类型数据是不可定义常量的
常量使用全大写字母命名方式
格式:
final 数据类型 符号常量=文字常量

2.1.5 变量的声明和初始化

Java语言的所有基本数据类型和引用数据类型都可以声明为相应的变量,需要注意的是:类的成员变量(成员方法体外声明的变量,在生成对象实例时,系统会自动赋初值);而在方法体内声明的变量,即局部变量,需要由语句显示地赋初值,否则会产生编译错误。
【例2.2 常量与变量初始化示例】

public class ConstantsAndInitialization {
    
    
	static boolean outBoolean;
	static char outChar;
	static double outInt;
	static double outDouble;
	public static void main(String[] args) {
    
    
		final double PI=3.1415;
		boolean inBoolean;
		char inChar;
		int inInt;
		double inDouble;
		inBoolean=true;
		inChar='a';
		inInt=100;
		inDouble=0.01;
		System.out.println(PI);
		System.out.println(outBoolean);
		System.out.println(inBoolean);
		System.out.println(outChar);
		System.out.println(inChar);
		System.out.println(outInt);
		System.out.println(inInt);
		System.out.println(outDouble);
		System.out.println(inDouble);
		
	}

}

程序2-5行是类成员变量声明,系统会进行默认初始化,7-11行是局部变量申明,12-15行进行赋值初始化。
输出:

3.1415
false
true

0.0
100
0.0
0.01


2.2 操作符

2.2.1 赋值操作符

基本类型赋值存放在栈中,引用类型的值放在堆中

class IntNumber{
    
    
	int i;
}
public class Assignment {
    
    
    public static void main(String[] args) {
    
    
    	IntNumber n1=new IntNumber();
    	IntNumber n2=new IntNumber();
    	int j=9;
    	int k=47;
    	n1.i=9;
    	n2.i=47;
    	System.out.println("1:n1.i:"+n1.i+",n2.i:"+n2.i+",j:"+j+",k:"+k);
    	n1=n2;
    	j=k;

    	System.out.println("1:n1.i:"+n1.i+",n2.i:"+n2.i+",j:"+j+",k:"+k);
    	n1.i=27;
    	j=27;

    	System.out.println("1:n1.i:"+n1.i+",n2.i:"+n2.i+",j:"+j+",k:"+k);
    }
}

1:n1.i:9,n2.i:47,j:9,k:47
1:n1.i:47,n2.i:47,j:47,k:47
1:n1.i:27,n2.i:27,j:27,k:47

2.2.2 数学操作符

重点掌握自加、自减
同时二元数学操作符具有左结合性

public class AutoInc {
    
    
	public static void main(String[] args) {
    
    
		int i=2;
		System.out.println(i);
		System.out.println(i++);
		System.out.println(i);
		int j=2;
		System.out.println(j);
		System.out.println(++j);
		System.out.println(j);
	}

}

2
2
3
2
3
3

2.2.3 关系操作符

值得注意的是:
“==”一般比较两个基本类型的数据,当“==”用于比较引用类型的数据时,比较的是引用类型的句柄(类似对象的一个唯一的身份id),而不是其所指的内容,所以对于两个引用类型的数据值是否相等,必须使用专用的方法equals()

  • 基本类型使用“==”、“!=”来比较是否相等
  • 引用类型使用equals()

public class Equivalence {
    
    
	public static void main(String[] args) {
    
    
		int i=1;
		int j=1;
		System.out.println("基本的数据i和j用==来比较是否相等的结果为:");
		System.out.println(i==j);
		Integer n1=new Integer(47);
		Integer n2=new Integer(47);
		System.out.println("引用数据类型n1和n2用==来比较是否相等结果为:");
		System.out.println(n1==n2);
		System.out.println("引用数据类型n1和n2用equals()方法来比较是否相等的结果为:");
		System.out.println(n1.equals(n2));
	}

}
基本的数据i和j用==来比较是否相等的结果为:
true
引用数据类型n1和n2用==来比较是否相等结果为:
false
引用数据类型n1和n2用equals()方法来比较是否相等的结果为:
true

2.2.4 逻辑操作符

逻辑操作符涉及的“短路问题”:


public class ShortCircuit {
    
    
	static boolean test1(int val) {
    
    
		System.out.println("test1("+val+")");
		System.out.println("result:"+(val<1));
		return val<1;
	}
	static boolean test2(int val) {
    
    
		System.out.println("test2("+val+")");
		System.out.println("result:"+(val<2));
		return val<2;
	}
	static boolean test3(int val) {
    
    
		System.out.println("test3("+val+")");
		System.out.println("result:"+(val<3));
		return val<3;
	}
	public static void main(String[] args) {
    
    
		if(test1(0)&&test2(2)&&test3(2))
			System.out.println("expreesion is true");
		else
			System.out.println("expression is false");
	}
}

输出

test1(0)
result:true
test2(2)
result:false
expression is false

我们可以看到,当某个决定整个表达式值得结果出现时,其后所有操作便不再进行,有效利用逻辑表达式可以提高代码潜在得性能。

2.2.5 位操作符和位移操作符

2.2.6 字符串操作符

操作符"+“可以实现两个或多个字符串得连接,也可实现字符串与其他类对象得连接,在连接时,其他类对象会被转换成字符串。
运算符”+="把两个字符串连接的结果放进第一个字符串中。


public class AddString {
    
    

	public static void main(String[] args) {
    
    
		int x=0,y=1,z=2;
		String sString="x,y,z";
		System.out.println(sString+x+y+z);
		System.out.println(x+y+z+sString);

	}

}

输出:

x,y,z012
3x,y,z

2.2.7 类型转换操作符

  • 在一个表达式中允许有不同类型的数据进行混合运算。
  • 低级数据类型可以直接自动转换为高级数据类型(short—>int)
  • 高级数据类型转换为低级数据类型采用强制类型转换(type)expression
public class TypeConversion{
    
    
   public static void main(String[] args){
    
    
   char a='A';
   int i=100;
   int sum=0;
   sum=(int)a+i;
   System.out.println(sum);}
}

输出:

165

2.2.8 三元条件操作符

  • 布尔表达式?值1:值2

若布尔表达式的结果为true,就计算值1;若布尔表达式结果为false,就计算值2;并返回对应的值。


public class TernaryOperator {
    
    
    public static void main(String[]
args){
    
    
    char x='X';
    int i=0;
    System.out.println(true?x:0);
    System.out.println(false?i:x);
	}
}

输出:

X
88

值得注意的是第二次输出的时候输出X 的ascⅡ值,这是因为三元操作符会按照“?”后的数据的类型转换“:”后的数据的类型进行类型统一。

2.2.9 Java语言操作符的优先级与结合性

在这里插入图片描述

2.3 表达式与语句

2.3.1 表达式

表达式是运算符、常量和变量的遵循语法规则的组合。

2.3.2 语句与语句块

  • Java语句包含基本语句和控制语句
    • 基本语句完成类似于声明、赋值等操作
    • 控制流语句控制程序流程
  • Java中的每条语句均以分号(;)结束

2.4 控制流程

2.4.1 顺序结构

顺序结构就是程序从上到下一行一行地执行,中间没有任何跳转和判断。

2.4.2 选择结构

  1. if-else
  2. switch语句:
switch(表达式){
    
    
case value1:语句块1breakcase value2:语句块2breakcase value3:语句块3break;
……
case value4:语句块n;breakdefault:语句块n+1}
  • 其中,表达式可以是byte、short、int、long、char或者枚举类型。
  • 如果没有break语句,程序会默认执行下一个case语句(不管你下一个表达式符不符合),直到碰到break语句。

2.4.3 循环结构

  1. while循环
  2. do-while循环
    do-while循环会首先执行循环体;然后计算循环条件表达式(意味着无论表达式结果如何,语句体都会执行一次)

2.4.4 break语句和continue语句

  1. break语句:终止循环
  2. continue:就强制结束本次循环,转而执行下一次循环

2.4.5 return语句

return是一种特殊的跳转语句,可以从方法中退出。

猜你喜欢

转载自blog.csdn.net/KQwangxi/article/details/114965588