Java语言程序(一)

Java语言程序概述

	Java已经成为一种相当成熟的语言,是一种简单、跨平台、面向对象、分布式、健壮、安全、可移植、多线程的动态语言。即“Write Once,Run Anywhere”(一次编写,随处运行),面向网络Web应用。

程序特点

	1.简单性:与C++相比,去除了指针、操作运算符重载、多重继承等,语法更加简单。
	2.平台无关性:Java程序独立运行于JVM虚拟机中,虚拟机可以运行在各种平台上,Java的数据类型与硬件无关。
	3.安全性:Java去除了指针,免去了对寄存器地址的直接操作,避免通过指针破坏计算机。(免去了直接操作,可以理解为一个功能被限制的指针)
	4.面向对象编程:Java的具有类的抽象、封装、继承、多态等特性,实现了代码的重复利用,Java是单继承方式。
	5.分布式:Java建立在扩展的TCP/IP网络平台上,函数提供了使用http、ftp协议传送和接受信息的方法。
	6.健壮性:Java致力于检查程序,在编译和运行时的错误,自动垃圾回收,内存管理,减少了程序出错的可能性。还提供了指针、数据边界检测异常出口校验。
	7.解释型:Java程序的运行首先要生成字节码的中间代码,字节码可以出现在任何操作系统上被解释执行。
	8.动态加载:类库是运行时动态加载的。

Java程序编译过程

编写Java程序
Java源代码*.java文件
Java编译器
字节码 *.class文件
Java虚拟机
各计算机平台

Java目前版本

(1)J2SE:称为Java标准版或Java标准平台。J2SE提供了标准的SDK开发平台,即JDK。
(2)J2EE:称为Java企业版或Java企业平台。该包主要包含开发企业级应用所需的类库。
(3)J2ME:称为Java微型版或Java小型平台。该包主要包含开发小型智能设备所需的类库,如手机、电视机、打印机、智能家电等。已经被Android代替。

Java虚拟机JVM

Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。
Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

垃圾收集器GC

Java的垃圾收集器是自动执行的,不能强制执行。程序员唯一能做的就是通过调用System.gc()方法“建议”垃圾收集器工作,但其是否可以执行,什么时候执行却是不可控制的。

JDK及JRE安装包

JDK安装包

JDK(Java development kit):Java开发工具包,是Java平台的核心,Java运行环境、Java工具、Java基础类库。其包含了JRE与开发Java程序所需的工具。
java文件夹中:

  • bin:开发工具命令
  • lib:Java核心类库
  • src:Java类库的核心代码

JRE安装包

JRE(Java runtime environment):Java运行必要环境,是Java运行所有必须的环境的集合,包含JVM、Java核心类。JRE是Java程序可以运行、测试的平台。如果只需运行Java程序,可只安装JRE。

Java语言的程序类型及结构

Java程序可分为两种:

Application:Java应用程序,指可在Java平台上独立运行的一种程序。
Applet:Java小程序,指内嵌在HTML文件里,需要在浏览器的支持下才能运行。
Java程序的结构:

package语句:有0个或1个,表示该程序所属的包。有则必须放在最前面,无则表示程序属于默认包。
import语句:有0个或多个,表示引入其他类库中的类。有则必须放在类定义的前面。
类定义:有1个或多个,是Java源程序的主要部分。Java程序中定义类使用关键字class,每个类由类头定义(声明类名,还可含继承或实现特性)和类体定义(域:包括变量、常量、对象、数组等独立的实体;方法:类似函数的代码单元块)两部分组成。

Java语言基础

标识符

标识符是Java中对各种变量、方法和类等要素命名时使用的字符序列

标识符命名规则

  • 严格区分大小写;
  • 由字母(不只是英文字母)、数字、下划线和美元符($)号组成;
  • 不能以数字开头;
  • 不能是关键字或保留字。

关键字

关键字是赋予特定含义,用作专门用途的字符串。
注意:所有Java关键字都是小写的,true flase null等都不是Java关键字。

关键字含义
abstract表明类或者成员方法具有抽象属性
assert断言,用来进行程序调试
boolean基本数据类型之一,声明布尔类型的关键字
break提前跳出一个块
byte基本数据类型之一,字节类型
case用在switch语句之中,表示其中的一个分支
catch用在异常处理中,用来捕捉异常
char基本数据类型之一,字符类型
class声明一个类
const保留关键字,没有具体含义
continue回到一个块的开始处
default默认,例如,用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现
do用在do-while循环结构中
double基本数据类型之一,双精度浮点数类型
else用在条件语句中,表明当条件不成立时的分支
enum枚举
extends表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口
final用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量
finally用于处理异常情况,用来声明一个基本肯定会被执行到的语句块
float基本数据类型之一,单精度浮点数类型
for一种循环结构的引导词
goto保留关键字,没有具体含义
if条件语句的引导词
implements表明一个类实现了给定的接口
import表明要访问指定的类或包
instanceof用来测试一个对象是否是指定类型的实例对象
int基本数据类型之一,整数类型
interface接口
long基本数据类型之一,长整数类型
native用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的
new用来创建新实例对象
package
private一种访问控制方式:私用模式
protected一种访问控制方式:保护模式
public一种访问控制方式:共用模式
return从成员方法中返回数据
short基本数据类型之一,短整数类型
static表明具有静态属性
strictfp用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范
super表明当前对象的父类型的引用或者父类型的构造方法
switch分支语句结构的引导词
synchronized表明一段代码需要同步执行
this指向当前实例对象的引用
throw抛出一个异常
throws声明在当前定义的成员方法中所有需要抛出的异常
transient声明不用序列化的成员域
try尝试一个可能抛出异常的程序块
void声明当前成员方法没有返回值
volatile表明两个或者多个变量必须同步地发生变化
while用在循环结构中

常量与变量

常量和变量都时程序设计人员用来存取内存中数据内容的一个标识码,他们最大的区别是常量会固定不变,变量会根据程序的执行而改变。

常量语法

常量是指在程序运行过程中其值始终不变的量。
常量也分类型,包含整型、浮点型、布尔型、字符型和字符串型。使用常量好处:增加可读性,增强可维护性。常量声明只需要使用关键字final即可。

final  <类型>   <常量名1>[=<缺省值1>][,<常量名2>[=<缺省值2>]···];
例如:final float  PI=3.1415926f;

变量语法

变量是指在程序运行过程中其值可以改变的量。
在变量声明的时候也可以给变量赋初值(变量初始化),后面根据需要再进行变量的赋值即可。

<类型>    <变量名1>[=<缺省值1>][<变量名2>[=<缺省值2>]···];
int  i=4;    float  f=12.3;   string  s=“hello”;

基本数据类型

整型

包含四种:
字节型(byte)占位数为8位,取值范围(-128 ~ 127),
短整型(short)占位数为16位,取值范围(-32768 ~ 32767),
整型(int)占位数为32位,取值范围(-2147483648 ~ 2147483647),
长整型(long)占位数为64位,取值范围( -9223372036854775808 ~ 9223372036854775807)
注意:整型常量默认为int性,声明long型可以后加‘1’或‘L’,建议使用‘L’。
举例:

int  xl=600;   //正确
long  x2=88888888888L;   //必须加L,否则会出错。
byte  变量1 = 65;  //200行不行?不行!注意值的范围byte(-128 ~ 127)
System.out.println(变量1); //输出:200溢出,输出-56

浮点型

包含两种:
单精度型(float)所占位数32位,默认值0.0f。取值范围为1.4E-45 ~ 3.4028235E38,常用于对小数位精度要求不是很高的数字,
双精度型(double)所占位数64位,默认值0.0d。取值范围为4.9E-324 ~ 1.7976931348623157E308
注意:Java语言的浮点型常量默认为double型,声明float型常量可以后加‘f’或‘F’。
举例

double d=1234.6;  //正确
float f=12.3f;  //必须加f,否则会出错。

字符型

char型,内存分配两个字节,占16位,char型变量的取值范围是0 ~ 65536。
举例

char eChar=‘a’;  //正确
charcChar=‘中’,漂亮=‘假’;  //正确
char dChar=‘bc’;  //错误

布尔型

boolean型,用于逻辑运算,一般用于程序流程控制、判断等。
布尔类型数据只允许取值true或false,默认为false。
举例:

boolean flag =true;
if(flag)
	{
		//do something
	}
数据类型转换

Java数据类型在定义时已经确定了,因此不能随意转换,但Java允许用户有限的进行数据类型转换。在所有基本数据类型中只有Boolean不能转换,其他都可进行转换。转换因级别、类型的不同区分"自动转换"和"强制转换"。

  • 自动转换:进行转换的两种类型兼容且目标类型的范围大于源类型的范围。转换不损失精度,也叫隐式转换。
public static void main(String[] args){
   byte a = 1;  // 定义byte类型
   int b = a;    // byte自动转换为int
   long c = b;   // int自动转换为long
   double d = b; // int自动转换为double
}
  • 强制转换:不满足类型自动转换的条件下仍然希望进行类型转换。转换有可能会损失精度,也叫显示转换。
public static void main(String[] args){
	float a = 1.1f;   // 定义float类型
	int b = (int)a;   // float强制转换为int
}
字符和int转换

要观察一个字符在Unicode表中的位置,使用int类型显示转换。
同理,要得到一个0~65536之间的数代表的Unicode表中相应位置上的字符,使用char型显示转换。
举例:

(int)‘中’返回:20013
(char)21271返回  北 

运算符

运算符按功能分可分为以下几类:

算数运算符:+、-、*、/、%、++、–。
关系运算符:>、<、>=、<=、==、!=。
逻辑运算符:!、&&、||、&、|。
位运算符:>>、<<、>>>、&、|、^、~。
赋值运算符:=。
扩展赋值运算符:+=、/= 等。
条件运算符(三元运算符):? : 。

算数运算符

算数运算符分一元运算符(只有一个操作数参与运算)和二元运算符(有两个操作数参与运算)。

一元预算符功能示例
+正值+a
-负值-a
++加1++a或a++
减1–a或a–
二元运算符功能示例
+a+b
-a-b
*a*b
/a/b
%整除求余a%b

关系预算符

预算符功能示例
>大于a > b
>=大于等于a >= b
<小于a < b
<=小于等于a <= b
==等于a == b
!=不等于a != b

逻辑运算符

运算符功能示例运算规则
&逻辑与a & b两个操作均为真时,结果才是真
|逻辑或a|b两个操作均为否时,结果才是否
!逻辑非!a将操作数取反
^异或a ^ b两个操作同真或同否时,结果才是否
&&简洁与a && b两个操作均为真时,结果才是真
||简洁或a||b两个操作均为否时,结果才是否

位运算符

运算符功能示例运算规则
~按位取反~a将a按位取反
&按位与a & b将a和b按比特位相与
|按位或a|b将a和b按比特位相或
^按位异或a ^ b将a和b按比特位异或
>>右移a >> b将a各比特位向右移b位
<<左移a << b将a各比特位向左移b位
>>>0填充右移a >>> b将a各比特位向右移b位,左边空位一律以0填充

赋值运算符与扩展赋值运算符

赋值运算符:“=”,格式为:变量或者对象=表达式。
扩展运算符及等效表达式

运算符示例等效表达式
+=a += ba = a + b
=a = ba = a-b
*=a *= ba = a * b
/=a /= ba = a / b
%=a %= ba = a % b
&=a &= ba = a & b
|=a| = ba = a|b
^=a ^= ba = a ^ b
>>=a >>= ba = a >> b
<<=a <<= ba = a << b
>>>=a >>>= ba = a >>> b

条件运算符

条件运算符:“? :”,也叫三元运算符,
格式为:表达式1?表达式2 : 表达式3,
功能是计算表达式1的值,当表达式1为真时,表达式2为整个表达式的值,否则表达式3为整个表达式的值。

输入与输出

数据输入

scanner 类

Java中负责数据输入的类是scanner,scanner在Java.util包中。

利用该类进行数据输入操作的步骤如下:
(1)在程序开头添加一行导入包语句import java.util.*;
(2)构造scanner类对象,它附属于标准输入输出流system.in。
scanner scanner=new scanner(system.in);
(3)使用scanner类的各种方法实现输入操作,该类提供一系列nextXXX()方法实现输入不同类型的数据,其中XXX为数据类型关键字名称,常用next系列方法如下表所示。

scanner类常用next系列方法

方法概述
nextBoolean()扫描解释为布尔值的输入标记并返回该值。
nextDouble()将输入信息的下一个标记扫描为一个double。
nextFloat()将输入信息的下一个标记扫描为float。
nextInt()将输入信息的下一个标记扫描为int。
nextLine()此扫描器执行当前行,并返回跳过的输入信息。
next()读取输入的下一个单词(以空格作为分隔符)
next() 与 nextLine() 区别
  • next():

1、一定要读取到有效字符后才可以结束输入。
2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
next() 不能得到带有空格的字符串。

  • nextLine():

1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
2、可以获得空白。

输出方法

  • 1、system.out.println(输出项)方法,输出结果换行。
  • 2、system.out.print(输出项)方法,输出结果后不换行。
import java.util.*;//输入scanner类,其中*可以换成scanner类的类名。
public class Java {
   public static void main(String[] args){
   	//Java输入测试
       Scanner in = new Scanner(System.in);//创建scanner类对象in,(system.in)其参为标准输入
       System.out.print("输入你的姓名:");//输出提示字符串
       String name = in.nextLine();//接受输入的名字,nextline输入一行字符串

       System.out.print("输入你的年龄:");//输出提示字符串
       int age = in.nextInt();//接受输入的年龄,nextint输入整数值
       System.out.println("你的名字:"+name+",年龄"+age);//

       int x = in.nextInt();//输入一个整数x
       int y = in.nextInt();//输入一个整数y
       System.out.println("x+y="+(x+y));//将x与y进行加法运算并输出
   	//Java输出测试
   	   System.out.println("学习Java");//可以放置字符串
       System.out.println(10*2+4);//可以进行数学运算
       System.out.println("a="+20);//使用+连接字符串“a=20”
       System.out.print("学习java");//可以放置字符串
       System.out.print(10*2+4);//可以数学运算
       System.out.print("a="+20);//使用+连接字符串“a=20”
   }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值