当前位置: 首页 > news >正文

Java小白入门基础知识(二)

1.标识符

概念: 在程序中给类,方法,变量取的名称叫做标识符

规范: 字母,数字,下划线,$符号

注意: 不能以数字开头,也不能是关键字,严格区分大小写(一般定义常量就是大写)

软性建议: 

1)类名:每个单词首字母大写(大驼峰)

2)方法名:首字母小写,后面每个单词首字母大写(小驼峰)

3)变量名:与方法名规则相同

2.数据类型

和c语言不一样的是,字节类型是1byte,而char类型是2byte 

长整型:long

为了区分long和int,在long类型的数据后面加上大写的L

一个汉字字符是两个字节 c语言使用的是阿斯克只支持英文字符,但Java使用的是Unicode编码是两个字节能支持汉字 

 so ,在c里面 char为1字节

 在Java里面 char为2字节

3.类型转换

1) 不同的数字类型的变量之间赋值,表示范围更小的类型能隐式转换成范围较大的类型.

2) 如果需要把范围大的类型赋值给范围小的,需要强制类型转换,但可能精度丢失.

3) 将一个字面值常量进行赋值的时候,Java会自动针对数字范围进行检查.

4)强制类型转换不一定能成功,不相干的类型不能互相转换.

4.类型提升

不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的.

1) int和long之间

int会被提升为long

2) byte和byte的运算

byte a = 10;
byte b = 20;
byte c = (byte)(a + b);

对于short,byte这种比4个字节小的类型.会提升成四个字节的int,再运算

5.Java的字符串类型(c没有的 依靠指针数组)

1. 字符串类型概述

在 Java 中,字符串是一系列字符的序列,Java 提供了 StringStringBuilder 和 StringBuffer 这三个类来处理字符串。

String 类

String 类是 Java 中最常用的字符串类,它位于 java.lang 包下,所以使用时无需额外导入。String 对象一旦被创建,其值就不能被改变,也就是说 String 是不可变的。

public class StringExample {
    public static void main(String[] args) {
        // 创建一个 String 对象
        String str = "Hello";
        System.out.println(str);
    }
}
StringBuilder 类

StringBuilder 类位于 java.lang 包下,它表示可变的字符序列。StringBuilder 是非线程安全的,适用于单线程环境下频繁修改字符串的场景,其操作效率比 String 高。

public class StringBuilderExample {
    public static void main(String[] args) {
        // 创建一个 StringBuilder 对象
        StringBuilder sb = new StringBuilder("Hello");
        // 追加字符串
        sb.append(" World");
        System.out.println(sb.toString());
    }
}
StringBuffer 类

StringBuffer 类同样位于 java.lang 包下,它也是可变的字符序列。与 StringBuilder 不同的是,StringBuffer 是线程安全的,适用于多线程环境下频繁修改字符串的场景,但由于线程安全的实现会带来一定的性能开销,所以其操作效率相对 StringBuilder 较低。

public class StringBufferExample {
    public static void main(String[] args) {
        // 创建一个 StringBuffer 对象
        StringBuffer sb = new StringBuffer("Hello");
        // 追加字符串
        sb.append(" World");
        System.out.println(sb.toString());
    }
}

2. String 类的常用方法

1).length() 方法

用于返回字符串的长度。

public class StringLengthExample {
    public static void main(String[] args) {
        String str = "Hello";
        int length = str.length();
        System.out.println("字符串的长度是:" + length);
    }
}
2).charAt(int index) 方法

用于返回指定索引位置的字符。

public class StringCharAtExample {
    public static void main(String[] args) {
        String str = "Hello";
        char ch = str.charAt(1);
        System.out.println("索引为 1 的字符是:" + ch);
    }
}
3).substring(int beginIndex, int endIndex) 方法

用于返回从 beginIndex 到 endIndex - 1 的子字符串。

public class StringSubstringExample {
    public static void main(String[] args) {
        String str = "Hello World";
        String subStr = str.substring(6, 11);
        System.out.println("子字符串是:" + subStr);
    }
}
4).equals(Object anObject) 方法

用于比较两个字符串的内容是否相等。

public class StringEqualsExample {
    public static void main(String[] args) {
        String str1 = "Hello";
        String str2 = "Hello";
        boolean isEqual = str1.equals(str2);
        System.out.println("两个字符串是否相等:" + isEqual);
    }
}

3. StringBuilder 和 StringBuffer 类的常用方法

1).append(String str) 方法

用于在字符串末尾追加指定的字符串。

public class StringBuilderAppendExample {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("Hello");
        sb.append(" World");
        System.out.println(sb.toString());
    }
}
2).delete(int start, int end) 方法

用于删除从 start 到 end - 1 的字符。

public class StringBuilderDeleteExample {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("Hello World");
        sb.delete(6, 11);
        System.out.println(sb.toString());
    }
}
3).reverse() 方法

用于反转字符串。

public class StringBuilderReverseExample {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("Hello");
        sb.reverse();
        System.out.println(sb.toString());
    }
}

综上所述,String 适用于字符串不经常变化的场景,StringBuilder 适用于单线程环境下字符串频繁变化的场景,StringBuffer 适用于多线程环境下字符串频繁变化的场景。

      

相关文章:

  • 晶闸管主要参数分析与损耗计算
  • JavaScript 内置对象-日期对象
  • Ubuntu 系统 LVM 逻辑卷扩容教程
  • Hive之分区表
  • 【大模型系列】Windows系统上运行大语言模型方式
  • SpringBoot+微信小程序+数据可视化的宠物到家喂宠服务(程序+论文+讲解+安装+调试+售后等)
  • HCIA项目实践(网络)---NAT地址转化技术
  • frp-tool,客户端frp命令行工具
  • 【苍穹外卖】学习
  • LeetCode 1299.将每个元素替换为右侧最大元素:倒序遍历,维护最大值,原地修改
  • WPS的AI助手进化跟踪(灵犀+插件)
  • 【NLP251】BertTokenizer 的全部 API 及 使用案例
  • shell脚本备份mysql数据库和库下表
  • 算法刷题--哈希表--字母异位词和两个数组的交集
  • linux运行kettle 遇到问题汇总
  • 【区块链】零知识证明基础概念详解
  • WebMvcConfigurer 介绍
  • 【硬核对比】C语言 vs MATLAB:从内存管理到矩阵运算的降维打击
  • Docker+Ollama+WebUI+AnythingLLM,构建企业本地AI大模型
  • 车规MCU处理器选择Cortex-M7还是Cortex-R52?
  • IMF前副总裁朱民捐赠1000万元,在复旦设立青云学子基金
  • 哈莉·贝瑞、洪常秀等出任戛纳主竞赛单元评委
  • 杜前任宁波中院代理院长,卸任宁波海事法院院长
  • 借助AI应用,自闭症人群开始有可能真正“读懂他人”
  • 黄永年:说狄仁杰的奏毁淫祠
  • 深一度|“凑合过”的利物浦,英超第二冠只求性价比