一些JAVA基础知识

本文详细介绍UML的各种图示及Java基础知识,包括类、方法、变量的命名规范,数组、字符串的操作,以及常见包的使用等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • UML(Unified Modeling Language,统一建模语言)

    • 用例图(use case diagram)
    • 类图(class diagram)
    • 序列图(sequence diagram)
    • 活动图(activity diagram):类似流程图
  • 标识符命名要求

包名(package name):全小写
类名(class)&接口名(interface):首字母大写
方法名(method):首字母小写,第一个单词通常为动词,如balanceAccount()。
变量名(variable):小写,一般为名词。
常量名(constant name):基本数据类型全大写,多个单词下划线隔开;引用类型(对象类型)大小写混合,大写字母把单词隔开。
  • 修饰符:public(公有的)、private(私有的)、protected(受保护的)、static(静态的)、final(最终的)
  • 常量声明:
[修饰符] final 数据类型 常量名 = 数值(或字符串);
//使用关键字final来修饰,表示该变量的值不能改变。
  • 数组
数组声明:
int[] intArray;//初始长度为null
初始化:
int[] intArray = {1,2,3,4};
或
int[] myArray = new int[3];
myArray [0] = 1;
myArray [1] = 2;
myArray [2] = 3;
  • 一个类可以访问其所在包的所有类,还可以访问其他包中的所有public类。
  • do{ } while();//注意末尾有分号

  • 常用的包
包名包内的类
java.lang(默认包,系统自动引入)String、Wrapper classes(基本数据类型类)、Math、线程异常处理类等
java.util(Java实用类库,工具类包)Calendar(处理日期)、Date(处理时间)、ArrayList(动态数组)
java.textDateFormat及其子类SimpleDateFormat(提供数字和日期格式化的类)
java.awt(构建GUI的类库)Graphics(低级绘图操作)、图形界面组件和布局管理(Button类、Label类、TextField接口)
java.swing(扩展(继承)java.awt包,提供更美观的GUI类库)JButton、JLabel、JTextField
java.ioInputStream、OutputStream
java.sql(实现JDBC(java database connection)的类库,提供访问数据库的类)Connection、Statement、ResultSet
java.netSocket、ServerSoket
  • 实例化String对象的两种方法
    1. String myString = “Hello World”;
    2. String myString = new String(“Hello World”);
  • String类的常用方法成员
header 1header 2说明
intlength()取得字符串的长度
booleanequals(String str)判断原字符串中的字符是否等于指定字符串str中的字符
StringtoLowerCase()转换字符串中的英文字母为小写
StringtoUpperCase()转换字符串中的英文字母为大写
intindexOf(String str)返回字符串中第一次出现字符串str的位置
StringsubString(int x,int y)返回该字符串从位置(索引)x开始到y的子字符串
static StringvalueOf(X)将基本类型的数据X转换成字符串

注:valueOf()是静态(static)方法,调用时用其类名即可

double double1 = 21.5;
String str1 = String.valueOf(double1);
  • 字符串与其他类型的转换
1.基本类型转换为字符串:如上
2.字符串转换为其他类型,如:
(1)转换为整型数
String strInteger = new String("10");
int nInt = Integer.parseInt(strInteger);
(2)转换为浮点型数
String strFloat = new String("3.14");
float fFloat = Float.parseFloat(strFloat);
  • 动态数组类ArrayList
创建:
ArrayList <E> 变量 = new ArrayList<E> ();

类方法:

返回数据类型方法说明
booleanadd(E element)在数组末尾加元素element
voidadd(int index, E element)在index指定的位置插入元素element
Eget(int index)返回index位置的元素
Eremove(int index)删除index位置的元素
voidset(int index, E element)将元素element放到位置index上,覆盖原来的元素
Object[]toArray()取数组中的所有元素,返回值为一个数组
intsize()返回此数组中元素的个数

日期类

  • Calendar和DateFormat类都不能被实例化,但可以通过相应的静态方法来获得实例
  • Date类
Date date = new Date();//创建一个日期对象
date.getTime();//返回当前时间(长整型数)
//得到的结果不可读,需转换为可读格式。
  • SimpleDateFormat类,时间格式化
格式:
EEEE - MMMM - dd - yyyy //星期几 - 月 - 日 - 年
yyyy/MM/dd 
yyyy年MM月dd日HH时mm分
如:
Date date = new Date();
SimpleDateFormat dFormat = new SimpleDateFormat("EEEE/MMMM/dd/yyyy");
System.out.println(dFormat.format(date));
  • Calendar类
Calendar c1 = Calendar.getInstance();//获得一个实例

/*获取当前时间*/
int year1 = c1.get(Calendar.YEAR);
int month1 = c1.get(Calendar.MONTH);
int day1 = c1.get(Calendar.DAY_of_month);
int hour1 = c1.get(Calendar.HOUR);
int minute1 = c1.get(Calendar.MINUTE);

(输出)

/*在当前天数上增加100天*/
c1.add(Calendar.DAY_OF_YEAR,100);

/*获得100天后的日期*/
int year2 = c1.get(Calendar.YEAR);
int month2 = c1.get(Calendar.MONTH);
int day2 = c1.get(Calendar.DAY_of_month);
int hour2 = c1.get(Calendar.HOUR);
int minute2 = c1.get(Calendar.MINUTE);

包装类Wrapper

将非对象包装成对象来使用。每个基本类型都对应一个包装类。
- 以便转换为引用类型,方便涉及对象的操作。
- 增加每种基本数据类型的相关属性,如最大值、最小值等,以及相应的操作方法。

Primitive Type(基本数据类型)Wrapper Classes(对应的包装类)
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean
数值计算类Math

Math类中的方法都是静态的,可直接用Math类调用该类的方法。

value = Math.cos(angle);//返回角度angle的余弦
root = Math.sqrt(num);//返回数num的平方根
dist = Math.abs(val);//返回数val的绝对值
small = Math.min(var1,var2);//返回较小的值
扫描器类Scanner

scanner放在java.util包中。常用方法如下:

返回数据类型方法类型说明
Scanner(InputStream source)构造方法从指定的字节输入流中接收内容
booleanhasNextInt()普通方法判断输入的数据是否是整型数
booleanhasNextFloat()普通方法判断输入的数据是否是浮点型数
Stringnext()普通方法接收一个字符串
intnextInt()普通方法接收一个整数
floatnextFloat()普通方法接收一个浮点数
StringnextLine()普通方法接收一行字符

代码示例:

Scanner sc = new Scanner(System.in);//创建一个Scanner类实例
int i = sc.nextInt();//调用方法nextInt()
其中System.in是标准输入流

whlie(sc.hasNextInt()) {
   /* ...*/
}
//sc.hasNextInt()为条件表达式

自定义类

主动类和问题域类(PD class,Problem Domain class):主动类调用相应问题域类的方法,以实现应用系统的各种功能。

  • 类定义的结构
[类修饰符] class 类名{
    属性
    方法
}
//类修饰符:public(表示该类具有公共的可访问性,即任何包中的类都可以使用它。)
//         什么也不写(表示该类只能被所在包的类使用)
  • 声明类的属性变量
[修饰符] 类型 变量名;
//修饰符包括:
//public:公有变量,可被同一包中的所有类访问。
//private:私有变量,只能被所在类访问。
//protect:受保护变量,可被所在类和子类访问。
注:为了实现类的封装性,提高数据(属性)的安全性,通常定义为private
  • 编写类的方法成员
修饰符 返回值数据类型 方法名([形式参数列表]) {
    [局部变量列表]
    语句块
}
  1. 标准方法:取值(getter)方法和赋值(setter)方法。如:
private int radius;//类属性变量声明

/*getter*/
public int getRadius() {
    return radius;
}

/*setter*/
public void setRadius(int theRadius) {
    radius = theRadius;
}

注:编译器MyEclipse可自动生成
  1. 自定义方法:用来实现类的行为

  2. 构造方法(constructor):负责对象属性成员的初始化工作,为属性变量赋予合适的初值。

    • 构造方法不含返回值
    • 所有类至少有一个构造方法,被用来类的实例化。
    • 一个类中可以定义多个构造方法,方法名相同,但形式参数列表不同。

静态变量和静态方法

一个类可以创建很多实例,每个实例都有自己的存储空间,存放自己的数据和方法。
有时需要在类中有一种变量或者方法能被所有类的实例共享

如,记录某个类创建了多少实例,这时类中需要一个计数变量,每当创建一个实例,该变量加1.这个变量属于类的变量,所有实例共享。

在Java中称为静态变量或静态方法,用关键字static标识

//定义静态变量
private static 数据类型 变量名;
//定义静态方法
public static 返回值数据类型 方法名([形式参数列表]);
  • 静态变量和静态方法属于类所有,关键字static声明一个属性或者方法是与类相关的,而不是与类的某个特定的实例相关。因此,也称为“类变量”和“类方法”。
  • 调用静态方法可直接类名调用,而不需要用实例变量名。也就是说在 调用某个类的静态变量或静态方法时,不需要先创建这个类的实例
类名.静态方法名([实际参数列表]);

方法的重载(overloading method)

类以统一的方式(或同一方法名)来处理相似任务的一种手段。
- 方法的重载:即一个类中可以定义多个方法,这些方法具有相同的名字,但具有不同的参数和不同的方法体
- 调用时通过传递给他们的不同参数来决定具体使用哪个方法。
- “一个接口,多个方法”
- 可重载一般方法,也可重载构造方法。
- 方法的签名(signature):方法的名称参数的顺序及其类型构成了方法的签名。
- 在类中每个方法的签名必须唯一。
- 返回数据类型对方法的签名没有影响。

异常

抛出异常、捕捉异常、处理异常
1. 检查性异常:程序正确,但因外在环境不满足而引发。
2. 运行时异常:程序存在bug。
3. 运行时错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值