java笔记2——类

类是一个模板,它描述一类对象的行为和状态。类可以看成是创建Java对象的模板,

通过下面一个简单的类来理解下Java中类的定义:

public class Dog{
  String breed;
  int age;
  String color;
  void barking(){
  }
 
  void hungry(){
  }
 
  void sleeping(){
  }
  public Dog(){
  }
  public Dog(String name){
  }
  public static void main(String[] args){
      Dog myDog = new Dog("tommy");
   }
}

其中包含的变量有如下3种类型:

(1)局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。

(2)成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。

(3)类变量:类变量是声明在类中,方法体之外且声明为static类型的变量。

另外,类中还包含一系列的方法,其中与类同名的方法为构造方法,一个类可以有0到多个构造方法(多个构造方法通过其输入参数进行区分),如果类中没有定义构造方法,java编译器会提供一个默认的构造方法。

类是一个模板,通过类可以使用关键字new创建一个对象:声明->实例化->初始化。

我们经常会遇到需要使用对象,而不是内置数据类型的情况。为了解决这个问题,Java语言为提供了一些包装类如Character类、Math类;

1.Character类

使用Character的构造方法创建一个Character类对象:

Character ch=new Character('a');

在某些情况下,Java编译器会自动创建一个Character对象(当一个char类型的参数传递给需要一个Character类型参数的方法时,那么编译器会自动地将char类型参数转换为Character对象。 这种特征称为装箱,反过来称为拆箱。)。

下面是Character类的常用方法:

方法名作用
Character.isLetter(c)判断字符c是否为字母
Character.isDigit(c)判断字符c是否为数字
Character.isWhitespace(c)判断字符c是否为空白字符
Character.isUpperCase(c)判断字符c是否为大写字母
Character.isLowerCase(c)判断字符c是否为小写字母
Character.toUpperCase(c)返回字符c的大写形式
Character.toLowerCase(c)返回字符c的小写形式
Character.toString(c)返回字符c的字符串形式

2.String类

String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了,如果需要对字符串做很多修改,那么应该选择使用StringBuffer或StringBuilder类

字符串之间的连接:"Hello, "+"World!",若要求更高,可使用format()方法创建格式化字符串,以一个例子说明:

String fs;
fs = String.format("浮点型变量的值为 " +
                   "%f, 整型变量的值为 " +
                   " %d, 字符串变量的值为 " +
                   " %s", floatVar, intVar, stringVar);

下面介绍一些String类常用的方法:

方法名作用
s.charAt(i)返回指定索引处的字符,i从0到len-1
s1.compareTo(s2)比较字符串s1与s2;相等返回0,s1<s2返回一个小于0的数,s1>s2返回一个大于0的数
s1.compareToIgnoreCase(s2)按字典顺序比较两个字符串,不考虑大小写。
s=s1.concat(s2)将指定的字符串参数连接到字符串上
s.contentEquals(sb)将此字符串与指定的 StringBuffer 对象比较;相等返回true,不相等返回false
s.copyValueOf(char[] d,int of=0,int co=len)返回指定数组中表示指定(偏移量,长度)字符序列的字符串。
s1.endsWith(s2)测试字符串s1是否以指定的后缀s2结束
s.equals(obj)将字符串s与指定的对象obj比较
s1.equalsIgnoreCase(s2)将字符串s1与字符串s2比较,不考虑大小写。
s.getBytes(charseName)使用指定的字符集charseName将字符串编码为 byte 序列后返回,charseName缺省则使用平台默认字符集
s1.getChars(sbe,sen,s2,dbe)复制字符串s1从sbe到sen的子序列到字符数组s2的dbe偏移处
s.hashCode()返回字符串s的哈希码
s1.indexOf(s2,int from=0)返回从from位置开始查找指定字符在字符串中第一次出现处的索引
s1.intern()返回字符串对象的规范化表示形式。
s1.lastIndexOf(s2,int from=len-1)返回子字符串s2在字符串s1中最后一次出现处的索引,从指定的索引开始反向搜索。
s.length()返回字符串s的长度
s.matches(regex)检测字符串是否匹配给定的正则表达式
s1.regionMatches(boolean ignoreCase=false,of1,s2,of2,len)检测两个字符串子序列s1[of1..of1+len-1]与s2[of2..of2+len-1]是否相等,ignoreCase决定是否忽略大小写
s2=s1.replace(oc,nc)返回将s1中oc替换为nc后的新字符串s2
s1.replaceAll(regex,s2)使用给定的字符串s2替换字符串s1中所有匹配正则表达式regex的子字符串
s1.replaceFirst(regex,s2) 使用给定的字符串s2替换字符串s1中第一个匹配正则表达式regex的子字符串
String[] s2=s1.split(regex,int lim)根据匹配正则表达式regex来拆分字符串s1为字符串数组s2,lim设定拆分组数,缺省则全部拆分
s1.startsWith(s2,int from=0)检测字符串s1是否以指定的前缀开始,from设定开始查找的索引
CharSequence s2=s1.subSequence(from,end)返回一个新的字符序列,它是此序列从from到end的一个子序列。
s2=s1.substring(begin,end)返回字符串s1从begin(包括)到end(不包括)的子序列
s2=s1.toCharArray()将字符串s1转换为字符数组s2
s2=s1.toLowerCase()将字符串s1转换为小写
s2=s1.toUpperCase()将字符串s1转换为大写
s2=s1.trim()返回删除字符串s1的头尾空白符之后的字符串

这里需要详细说明一下的是intern()方法,虽然看上去字符串使用这个方法之后像什么都没有做,但是后台会进行一系列的动作:在调用”ab”.intern()方法的时候会返回”ab”,但是这个方法会首先检查字符串池中是否有”ab”这个字符串,如果存在则返回这个字符串的引用,否则就将这个字符串添加到字符串池中,然会返回这个字符串的引用。

字符串相加的时候,都是静态字符串的结果会添加到字符串池,如果其中含有变量则不会进入字符串池中。

3.StringBuffer与StringBuilder

当需要对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。StringBuilder 的方法不是线程安全的(不能同步访问),StringBuffer是线程安全的,但是对StringBuffer进行操作的话速度较慢。下面介绍一些StringBuffer类的方法:

方法名作用
s1.append(s2)将字符序列s2追加到字符序列s1之后
s.reverse()将此字符序列反转。
s.delete(start, end)移除字符序列中从start到end的字符
s.insert(offset, i)将i的字符串表示形式插入字符序列s的offset偏移处
s1.replace(start, end, s2)将字符序列从start到end段用字符串s2替换
s.capacity()返回当前容量
s.ensureCapacity(min)确保s的容量至少为min
s.setLength(nlen)将字符序列s的长度设置为nlen

4.Math类

java提供了便于数学运算的包装类(Integer、Long、Byte、Double、Float、Short)与Math类(实现了常见的数学运算):

方法名作用
num.xxValue()将包装类对象num转换为xx数据类型的值并返回
x.compareTo(y) x>y返回1,x=y返回0,x<y返回-1
x.equals(y)x=y返回1,否则返回0
xx b=xx.valueOf(a)将a转换为xx类型的b
Integer b=Integer.valueOf(Sring a,int radix)返回以radix进制的字符串a的十进制值
x.toString()返回x的字符串形式
xx.toString(a)将xx类型的a转换为字符串
Integer.parseInt(String a,int radix=10)将字符串参数作为有符号的radix进制整数进行解析,返回其int类型的值
Math.abs(x)x是基本数据类型,返回x的绝对值
Math.ceil(x)对x向上取整
Math.floor(x)对x向下取整
Math.rint(x)返回距离x最近的整数
Math.round(x)对x四舍五入
Math.min(x,y)返回参数中的最小值
Math.max(x,y)返回参数中的最大值
Math.exp(x)返回自然数e的参数次方
Math.log(x)返回参数x的自然数e为底的对数值。
Math.pow(x,y)返回x的y次方
Math.sqrt(x)返回x的平方根
Math.sin(x)返回以x为角度的正弦值
Math.cos(x)返回以x为角度的余弦值
Math.tan(x)返回以x为角度的正切值
Math.asin(x)返回以x的反正弦值
Math.acos(x)返回以x的反余弦值
Math.atan(x)返回以x的反正切值
Math.atan2(y,x)即atan(y/x)
Math.toDegrees(x)将弧度x转换为角度
Math.toRadians(x)将角度x转换为弧度
Math.random()返回随机数

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
文件上传是Web开发中常见的功能之一,Java中也提供了多种方式来实现文件上传。其中,一种常用的方式是通过Apache的commons-fileupload组件来实现文件上传。 以下是实现文件上传的步骤: 1.在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency> ``` 2.在前端页面中添加文件上传表单: ```html <form method="post" enctype="multipart/form-data" action="upload"> <input type="file" name="file"> <input type="submit" value="Upload"> </form> ``` 3.在后台Java代码中处理上传文件: ```java // 创建一个DiskFileItemFactory对象,用于解析上传的文件 DiskFileItemFactory factory = new DiskFileItemFactory(); // 设置缓冲区大小,如果上传的文件大于缓冲区大小,则先将文件保存到临时文件中,再进行处理 factory.setSizeThreshold(1024 * 1024); // 创建一个ServletFileUpload对象,用于解析上传的文件 ServletFileUpload upload = new ServletFileUpload(factory); // 设置上传文件的大小限制,这里设置为10MB upload.setFileSizeMax(10 * 1024 * 1024); // 解析上传的文件,得到一个FileItem的List集合 List<FileItem> items = upload.parseRequest(request); // 遍历FileItem的List集合,处理上传的文件 for (FileItem item : items) { // 判断当前FileItem是否为上传的文件 if (!item.isFormField()) { // 获取上传文件的文件名 String fileName = item.getName(); // 创建一个File对象,用于保存上传的文件 File file = new File("D:/uploads/" + fileName); // 将上传的文件保存到指定的目录中 item.write(file); } } ``` 以上代码中,首先创建了一个DiskFileItemFactory对象,用于解析上传的文件。然后设置了缓冲区大小和上传文件的大小限制。接着创建一个ServletFileUpload对象,用于解析上传的文件。最后遍历FileItem的List集合,判断当前FileItem是否为上传的文件,如果是,则获取文件名,创建一个File对象,将上传的文件保存到指定的目录中。 4.文件上传完成后,可以给用户一个提示信息,例如: ```java response.getWriter().write("File uploaded successfully!"); ``` 以上就是使用Apache的commons-fileupload组件实现文件上传的步骤。需要注意的是,文件上传可能会带来安全隐患,因此在处理上传的文件时,需要进行严格的校验和过滤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值