一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。
对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
类:类是一个模板,它描述一类对象的行为和状态。
方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。
第一个Java程序
下面看一个简单的Java程序,它将打印字符串 HelloWorld
public class HelloWorld {
/* 第一个Java程序
* 它将打印字符串 Hello World
*/ public static void main(String []args) {
System.out.println("Hello World"); // 打印 Hello World
}
}复制代码类型:[java]
Hello World复制代码类型:[ Java ]
下面将逐步介绍如何保存、编译以及运行这个程序:
打开 Notepad ,把上面的代码添加进去;
把文件名保存为:HelloWorld.java;
打开cmd命令窗口,进入目标文件所在的位置,假设是C:
在命令行窗口键入javacHelloWorld.java按下enter键编译代码。如果代码没有错误,cmd命令提示符会进入下一行。(假设环境变量都设置好了)。
再键入javaHelloWorld按下Enter键就可以运行程序了
你将会在窗口看到HelloWorld
C : > javac HelloWorld.java
C : > java HelloWorld
Hello World复制代码类型:[java]
基本语法
编写Java程序时,应注意以下几点:
大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的。
类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如MyFirstJavaClass。
方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记Java是大小写敏感的),文件名的后缀为.java。(如果文件名和类名不相同则会导致编译错误)。
主方法入口:所有的Java程序由publicstaticvoidmain(Stringargs[])方法开始执行。
Java标识符
Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
关于Java标识符,有以下几点需要注意:
所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始
首字符之后可以是任何字符的组合
关键字不能用作标识符
标识符是大小写敏感的
合法标识符举例:age、$salary、_value、__1_value
非法标识符举例:123abc、-salary
Java修饰符
像其他语言一样,Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:
可访问修饰符:default,public,protected,private
不可访问修饰符:final,abstract,strictfp
在后面的章节中我们会深入讨论Java修饰符。
Java变量
Java中主要有如下几种类型的变量
局部变量
类变量(静态变量)
成员变量(非静态变量)
Java数组
数组是储存在堆上的对象,可以保存多个同类型变量。在后面的章节中,我们将会学到如何声明、构造以及初始化一个数组。
Java枚举
Java5.0引入了枚举,枚举限制变量只能是预先设定好的值。使用枚举可以减少代码中的bug。
例如,我们为果汁店设计一个程序,它将限制果汁为小杯、中杯、大杯。这就意味着它不允许顾客点除了这三种尺寸外的果汁。
class FreshJuice {
enum FreshJuiceSize{ SMALL, MEDUIM, LARGE }
FreshJuiceSize size;
}
public class FreshJuiceTest {
public static void main(String args[]){
FreshJuice juice = new FreshJuice();
juice.size = FreshJuice. FreshJuiceSize.MEDUIM ;
}
}复制代码类型:[java]
注意:枚举可以单独声明或者声明在类里面。方法、变量、构造函数也可以在枚举中定义。
Java关键字
下面列出了Java保留字。这些保留字不能用于常量、变量、和任何标识符的名称。
关键字 | 描述 |
abstract | 抽象方法,抽象类的修饰符 |
assert | 断言条件是否满足 |
boolean | 布尔数据类型 |
break | 跳出循环或者label代码段 |
byte | 8-bit 有符号数据类型 |
case | switch语句的一个条件 |
catch | 和try搭配扑捉异常信息 |
char | 16-bit Unicode字符数据类型 |
class | 定义类 |
const | 未使用 |
continue | 不执行循环体剩余部分 |
default | switch语句中的默认分支 |
do | 循环语句,循环体至少会执行一次 |
double | 64-bit双精度浮点数 |
else | if条件不成立时执行的分支 |
enum | 枚举类型 |
extends | 表示一个类是另一个类的子类 |
final | 表示一个值在初始化之后就不能再改变了 表示方法不能被重写,或者一个类不能有子类 |
finally | 为了完成执行的代码而设计的,主要是为了程序的健壮性和完整性,无论有没有异常发生都执行代码。 |
float | 32-bit单精度浮点数 |
for | for循环语句 |
goto | 未使用 |
if | 条件语句 |
implements | 表示一个类实现了接口 |
import | 导入类 |
instanceof | 测试一个对象是否是某个类的实例 |
int | 32位整型数 |
interface | 接口,一种抽象的类型,仅有方法和常量的定义 |
long | 64位整型数 |
native | 表示方法用非java代码实现 |
new | 分配新的类实例 |
package | 一系列相关类组成一个包 |
private | 表示私有字段,或者方法等,只能从类内部访问 |
protected | 表示字段只能通过类或者其子类访问 子类或者在同一个包内的其他类 |
public | 表示共有属性或者方法 |
return | 方法返回值 |
short | 16位数字 |
static | 表示在类级别定义,所有实例共享的 |
strictfp | 浮点数 比较使用严格的规则 |
super | 表示基类 |
switch | 选择语句 |
synchronized | 表示同一时间只能由一个线程访问的代码块 |
this | 表示调用当前实例 或者调用另一个 构造函数 |
throw | 抛出异常 |
throws | 定义方法可能抛出的异常 |
transient | 修饰不要序列化的字段 |
try | 表示代码块要做异常处理或者和finally配合表示是否抛出异常都执行finally中的代码 |
void | 标记方法不返回任何值 |
volatile | 标记字段可能会被多个线程同时访问,而不做同步 |
while | while循环 |
Java注释
类似于C/C++,Java也支持单行以及多行注释。注释中的字符将被Java编译器忽略。
public class HelloWorld {
/* 这是第一个Java程序
*它将打印Hello World
* 这是一个多行注释的示例
*/ public static void main(String []args){
// 这是单行注释的示例
/* 这个也是单行注释的示例 */ System.out.println("Hello World");
}
}复制代码类型:[java]
Java空行
空白行,或者有注释的的行, Java编译器 都会忽略掉。
继承
在Java中,一个类可以由其他类派生。如果你要创建一个类,而且已经存在一个类具有你所需要的属性或方法,那么你可以将新创建的类继承该类。
利用继承的方法,可以重用已存在类的方法和属性,而不用重写这些代码。被继承的类称为超类(superclass),派生类称为子类(subclass)。
接口
在Java中,接口可理解为对象间相互通信的协议。接口在继承中扮演着很重要的角色。
接口只定义派生要用到的方法,但是方法的具体实现完全取决于派生类。
常量
常量概念
常量:在程序的执行过程中,其值不会发生改变的量(数据)
常量分类
常量类型 | 说明 | 举例 |
用双引号括起来的内容 | 字符串常量 | “HelloWorld”,“开课吧” |
整数常量 | 不带小数的数字 | 不带小数的数字 |
小数常量 | 小数常量 | 13.14,-5.21 |
字符常量 | 用单引号括起来的内容 | ‘A’,‘0’, ‘我’ |
布尔常量 | 布尔值,表示真假 | 只有两个值:true,false |
空常量 | 一个特殊的值,空值 | 值是:null |
变量介绍
为什么要有变量
变量是用来存放数据的,如果没有变量,那么数据就无法存放。
什么是变量
当程序运行的时候,数据是存放在内存当中的,每一个数据就是一个内存地址,变量就是指向这个内存地址的。
怎样定义变量
变量的定义格式inta=2;
数据类型
计算机存储单元
我们知道计算机是可以用来存储数据的,但是无论是内存还是硬盘,计算机存储设备的最小信息单元叫“位(bit)”,我们又称之为“ 比特位 ”,通常用小写的字母”b”表示。而计算机中最小的存储单元叫“字节(byte)”,通常用大写字母”B”表示,字节是由连续的8个位组成。
除了字节外还有一些常用的存储单位,大家比较熟悉,我们一起来看看:
1B(字节)=8bit
1KB=1024B
1MB=1024KB
1GB=1024MB
1TB=1024GB
1PB=1024TB
……
数据类型
Java语言是强类型语言,对于每一种数据都给出了明确的数据类型,不同的数据类型也分配了不同的内存空间,所以它们表示的数据大小也是不一样的。
数据类型内存占用和取值范围
变量的定义和使用
变量的定义
1、变量的定义
数据类型变量名=数据值;
2、整数,小数,字符,布尔类型变量的定义
int a =;
double b =.23;
char c = 'c';
boolean d = true;复制代码类型:[java]
变量的使用
1、如何使用变量?
int a =;
int b =;12复制代码类型:[java]
2、根据标识,变量名进行使用
修改值 :a =;
打印值 :System.out.println(a);复制代码类型:[java]
变量的使用详解
变量的注意事项
1、变量的注意事项
2、一条语句可以定义多个变量
3、变量在使用之前一定要进行赋值
4、定义float和long变量的注意事项
5、变量的作用域范围
键盘录入
键盘录入介绍
为什么要有键盘录入?
目的:为了让我们操作的数据,变得更加灵活
举例:inta=10;
a虽然是个变量,但记录的值,却是手动写死的。
能不能让a变量记录的值,灵活起来,用户输入什么,a变量就记录什么。
键盘录入实现
实现键盘录入的三个步骤?
1、导包
import java.util.Scanner;
导包的动作必须出现在类定义的上边复制代码类型:[java]
2、创建对象
Scanner sc = new Scanner(System.in);
上面这个格式里面,只有sc是变量名,可以变,其他的都不允许变。复制代码类型:[java]
3、接收数据
int i = sc.nextInt();
上面这个格式里面,只有i是变量名,可以变,其他的都不允许变。复制代码类型:[java]
标识符
标识符概述
标识符:就是给类,方法,变量等起名字的符号。
标识符定义规则
1、由数字、字母、下划线(_)和美元符($)组成
2、不能以数字开头
3、不能是关键字
4、区分大小写
常见命名约定
小驼峰命名法:方法、变量
1、约定1:标识符是一个单词的时候,首字母小写
2、范例1:name
3、约定2:标识符由多个单词组成的时候,第一个单词首字母小写,其他单词首字母大写
4、范例2:firstName
大驼峰命名法:类
1、约定1:标识符是一个单词的时候,首字母大写
2、范例1:Student
3、约定2:标识符由多个单词组成的时候,每个单词的首字母大写
4、范例2:GoodStudent
类型转换
int a =;
double b =.3;
? c = a + b;
//那么c是什么类型?复制代码类型:[java]
类型转换的分类
1、隐式转换
2、强制转换
隐式转换的过程
把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量
范例:doubled=10;
简单记:小的给大的,可以直接给。
int4个字节
double8个字节
4升的油,倒入8升的桶,可以直接倒入
隐式转换的细节
小的数据类型,和大的数据类型运算,小的会提升为大的之后,再进行运算
特殊关注:byteshortchar三种数据在运算的时候,不管是否有更高的数据类型,都会提升为int,然后再进行运算
强制转换的过程
1、强制转换
把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量
2、格式:目标数据类型变量名=(目标数据类型)值或者变量;
3、范例:intk=(int)88.88;
注意:强制类型转换,有可能会发生精度损失
精度损失:简单理解,将容积为8升的容器中的水,倒入容积为4升的容器中,如果水超出了4升,就洒了。
类型转换案例
请判断下列代码是否存在问题,如果有,请指出并修正。
第3问题:a和b是两个byte类型,当(byteshortcharint)在一起运算的时候,会先提升为int,然后再进行运算。两个int相加后的结果,还是int类型,将int赋值给byte需要强制类型转换。
第4问题:没有问题
byted=3+4;为什么不会出现错误?
因为3和4,是两个常量,Java中存在【常量优化机制】常量优化机制:在编译时(javac),就会将3和4计算出一个7的结果,并且会自动判断该结果是否在byte取值范围内在:编译通过不在:编译失败