final关键字修饰时如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象,但引用变量不能变,引用变量所指向的对象中的内容还是可以改变的

final 与static final修饰变量区别

final修饰的值是可以改变内容不能改变引用地址。static fina修饰的因为它是static,在装载时已被初始化,而不是每次创建新对象时都初始化。所以内容也不可以改变

常用static final同时修饰一些常量

StringBuffer的几个案例

1、
  把数组拼接成一个字符串

 1 public class StringBufferTest2 {
2
3 public static void main(String[] args) {
4 //定义一个数组
5 int[] arr = {12,21,33,9,2};
6
7 //方式1:定义功能,使用String做拼接
8 String s1 = arrayToString(arr);
9 System.out.println("String拼接的方法:"+s1);
10
11 //方式2:定义功能能,使用StringBuffer做拼接
12 String s2 = arrayToString2(arr);
13 System.out.println("StringBuffer拼接的方法:"+s2);
14
15 }
16
17 public static String arrayToString(int[] arr) {
18 //定义一个[的字符串
19 String s = "[";
20 //进行数组的遍历以及转换为字符串
21
22 for(int x=0;x<arr.length;x++){
23 if(x == arr.length-1){
24 s += arr[x]+"]";
25 }
26 else{
27 s += arr[x]+",";
28 }
29 }
30 return s;
31 }
32
33 public static String arrayToString2(int[] arr) {
34
35 //定义一个"["的StringBuffer的缓冲区
36 StringBuffer sb = new StringBuffer();
37 sb.append("[");
38
39 //进行数组的遍历,以及转换为StringBuffer缓冲区
40 for(int x=0;x<arr.length;x++){
41 if(x == arr.length-1){
42 sb.append(arr[x]);
43 }
44 else{
45 sb.append(arr[x]).append(",");
46 }
47 }
48 sb.append("]");
49 //StringBuffer 转换成 String
50 return sb.toString();
51 }
52 }

2、
   把字符串反转

 1 import java.util.Scanner;
2 public class StringBufferTest3 {
3
4 public static void main(String[] args) {
5 Scanner sc = new Scanner(System.in);
6 System.out.println("请输入想要反转的数据");
7 String str = sc.nextLine();
8
9 //调用方法1 reverse1
10 String result = reverse1(str);
11 System.out.println("反转后的数据:"+result);
12
13 //调用方法2 reverse2
14 String result2 = reverse2(str);
15 System.out.println("反转后的数据:"+result2);
16 }
17
18 //方式1:用String的方法
19 public static String reverse1(String s){
20
21 //定义一个[的字符串
22 String s1 = "";
23
24 //把字符串转成数组
25 char[] ch = s.toCharArray();
26
27 //进行数组的元素遍历以及字符串的拼接
28 for(int x = ch.length-1;x >= 0;x--){
29
30 if(x == 0){
31 s1 += ch[x];
32 }
33 else{
34 s1 += ch[x];
35 }
36 }
37 return s1;
38 }
39
40 //方式2,利用StringBuffer的反转方法
41 public static String reverse2 (String s){
42
43 //把输入的String类型转换为StringBuffer类型
44 //StringBuffer buffer = new StringBuffer(s);
45
46 //进行StringBuffer的反转功能:
47 //public StringBuffer reverse()
48 //return buffer.reverse().toString();
49
50 //简洁版
51 return new StringBuffer(s).reverse().toString();
52 }
53
54 }

3、
  判断一个字符串是否是对称字符串
    分析:
      两种方法可以完成:
      A:用string来完成:
        先把字符串改成数组,再对里面的数据进行, 一个一个地对比,最后的和第一个,倒二和第二....
      B:用StringBuffer来完成:
        直接倒转来对比原值
      C:分别创建方法,两个必须确认的值:
                a:返回类型:boolean
                b:参数列表:String

 1 import java.util.Scanner;
2 public class StringBufferTest4 {
3
4 public static void main(String[] args) {
5 //创建键盘输入
6 Scanner sc = new Scanner(System.in);
7 System.out.println("请输入你想要判断的字符串:");
8 String str = sc.nextLine();
9
10 //调用第一种方法
11 boolean b1 = symmetry1(str);
12 System.out.println("这个字符串是否对称:"+b1);
13
14 //调用第一种方法2
15 boolean b2 = symmetry2(str);
16 System.out.println("这个字符串是否对称:"+b2);
17
18 //调用第二种方法
19 boolean b3 = symmetry2(str);
20 System.out.println("这个字符串是否对称:"+b3);
21 }
22
23 //方式1:用string的方法来一个一个对比
24 public static boolean symmetry1(String s){
25 //把字符串改成数组
26 char[] c = s.toCharArray();
27 //进行比较,定义2个变量:start和end,分别从两端开始对比
28 for(int start = 0, end = c.length-1;start < end ; start ++,end--){
29 if(c[start] != c[end]){//进行判断
30 return false;
31
32 }
33 }
34 return true;
35 }
36
37 //方式1的另外一种方式:
38 public static boolean symmetry2(String s){
39 //定义一个boolean值
40 boolean flog = true;
41
42 //把字符串改成数组
43 char[] c = s.toCharArray();
44
45 //进行比较,定义2个变量:start和end,分别从两端开始对比
46 for(int start = 0, end = c.length-1;start < end ; start ++,end--){
47 if(c[start] != c[end]){//进行判断
48 flog = false;
49 break;
50 }
51 }
52 return flog;
53 }
54
55 //方式2 利用StringBuffer的反转功能
56 public static boolean symmetry3(String s){
57 return new StringBuffer(s).reverse().toString().equals(s);
58 //先从String变为StringBuffer类型,再对它进行反转,再变回string类型,再让此时得到的字符串与原来的对比里面的数据是否一样
59 }
60 }

final修饰和StringBuffer的几个案例(拼接,反转,对称操作)的更多相关文章

  1. Java中的final修饰符

    1.什么时候可以选择final修饰符 如果想让一个类不被其他类继承,不允许在有子类,这时候就要考虑用到final来修饰. 2.用final修饰的类 首先大家要明白,用final修饰的类是不能被继承的, ...

  2. final修饰的变量是引用不能变还是对象的内容不能变?

    int a=1;此时a是变量: StringBuffer a=new StringBuffer();此时a就是引用变量,可以说是a引用String对象,通过a来操作String 对象 final St ...

  3. JAVA基础-栈与堆,static、final修饰符、内部类和Java内存分配

    Java栈与堆 堆:顺序随意 栈:后进先出(Last-in/First-Out). Java的堆是一个运行时数据区,类的对象从中分配空间.这些对象通过new.newarray.anewarray和mu ...

  4. 浅谈final修饰的变量

    一直大概的知道final关键字的作用,但是自己实际工作中却很少用,除非在声明一些常量值的时候,今天忽然自己在项目中用一个map进行存储一些值.一开始我只是用private修饰的,心里想的是如果fina ...

  5. Java中Final修饰一个变量时,是引用不能变还是引用的对象不能变

    Java中,使用Final修饰一个变量,是引用不能变,还是引用对象不能变? 是引用对象的地址不能变,引用变量所指的对象的内容可以改变. final变量永远指向这个对象,是一个常量指针,而不是指向常量的 ...

  6. final修饰的变量引用不能变还是对象不可变

    两种情况:如果是基本数据类型,被final修饰的变量一旦初始化就不能改变:如果是引用数据类型的变量,初始化之后不能指向另外一个对象. 基本数据类型: package cn.yqg.day2; publ ...

  7. 关键字final 修饰类、方法、属性、参数类型

    笔记: /** 关键字final(最终的) 标记的类不能被继承, 提高安全性,提高程序的可读性 * 1.final 修饰类,这个类就不能被继承: 如:String类.StringBuffer类.Sys ...

  8. final修饰符

    final本身的含义是"最终的,不可变的",它可以修饰非抽象类,非抽象方法和变量.注意:构造方法不能使用final修饰,因为构造方法不能被继承,肯定是最终的. final修饰的类: ...

  9. 0025 Java学习笔记-面向对象-final修饰符、不可变类

    final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...

随机推荐

  1. 根据已知值,选中selec中的选项

    $("#modal").find("select[name=materialType]").find("option").each(func ...

  2. HDU 4109 Instrction Arrangement

    题目链接:https://vjudge.net/problem/HDU-4109 题目大意 有 N 个指令,标号从 0 ~ N - 1,和 M 个指令间的先后关系,每个关系都有一个权值 w,表示后一个 ...

  3. Day 21 python :面向对象 类的相关内置函数 /单例模式 /描述符

    1.isinstance(obj,cls) 检查obj是否是类cls的对象: 备注:用isinstance 的时候,产生实例后,会显示实例既是父类的实例,也是子类的实例 class Mom: gend ...

  4. python全栈开放实践第三版第一章的练习题完成情况

    练习题: 1.简述编译型与解释型语言的区别,且分别列出你知道哪些语言属于编译型,哪些数以解释型.1 编译型:只须编译一次就可以把源代码编译成机器语言,后面的执行无须重新编译,直接使用之前的编译结果就可 ...

  5. 2019ICPC南京网络赛A The beautiful values of the palace

    题意:蛇形填数超大版本,需要求出一些给定坐标的值的数位和,然后q次询问,一个矩形区域内值的和是多少 解题思路:二维偏序前缀和的经典题 二维偏序:求(x,y)左下角点的个数,思路是对x,y升序排序,用树 ...

  6. Oracle中NEXTVAL 和 CURRVAL的使用

    能够通过在 SQL 语句中使用 NEXTVAL 或 CURRVAL 运算符来訪问序列的值.必须用以 sequence.NEXTVAL 或sequence.CURRVAL 格式驻留在同一个数据库中的序列 ...

  7. pytest--fixture---自动应用

    import pytest@pytest.fixture(autouse=True)-----加上auto=True,每个方法执行前都会自动登陆def login_r(open_browser): p ...

  8. ABP 3.7版本迁移数据库报错未能加载文件或程序集“Castle.Core, Version=4.0.0.0”

    ABP 3.7 3.8版本升级后迁移数据库,报错未能加载文件或程序集“Castle.Core, Version=4.0.0.0”,System.ComponentModel.Annotations也可 ...

  9. 【转】console.dir()和console.log()的区别

    原文链接:https://blog.csdn.net/ky1in93/article/details/80828499 console对象详解:https://segmentfault.com/a/1 ...

  10. 2019-4-15-VisualStudio-如何在-NuGet-包里面同时包含-DEBUG-和-RELEASE-的库

    title author date CreateTime categories VisualStudio 如何在 NuGet 包里面同时包含 DEBUG 和 RELEASE 的库 lindexi 20 ...