00|Java中常见错误或不清楚

本文介绍了Java编程的基础概念,包括多变量声明与初始化、不同类型的处理(如浮点类型转换、引用类型)、运算符注意事项、抽象方法与抽象类、接口的使用、Bean规范以及字符串和StringBuilder的操作。
摘要由CSDN通过智能技术生成

00. 多变量声明并初始化

  • 同时声明同类型的多变量
String a = "Hello", c = "hello";
int x = 5, y = 5;

01. 变量类型

在这里插入图片描述

01.0 浮点类型
  • 默认是double类型,如果需要指定float类型,可以float f = 1.0F;
01.1 类型装换
  • 如果将大的类型转为小的类型,可以用强制转换,但是会丢失精度。
01.2 引用类型
  • 注意:类,String,接口,数组这些都属于引用类型。

02. 运算符

在这里插入图片描述

02.0 除法运算注意点
  • 1/2 = 0 分析:除法按照最大的类型显示。这里两个数都是Int类型,所以会舍弃掉小数
  • 除法是没有四舍五入的。
  • 1.0/2 = 0.5 或者 1/2.0 = 0.5
02.1 赋值运算符注意点
  • 使用赋值运算符,数据类型不会发生变化
  • eg: byte b1=10; b1 = b1+10;这个就会犯大类型转小类型的错误
  • eg: b1 += 10;
02.2 短路运算符注意点
  • 会根据第一个条件表达式的结果来判断,是否执行第二个条件表达式
  • 验证程序:(如果j变为了21,则代表后面判断被执行了)
int i=10,j=20;
boolean result = (i>10) && (++j>30);
System.out.println(result);
System.out.println(j);

03 抽象方法&&抽象类

  • 抽象方法:只声明,没有实现的方法
    • abstract 返回值类型 方法名(参数)
  • 抽象类:不完整的类
    • abstract class 类名
    • 抽象类是无法直接构造对象的,即Person p = new Person()这种对于抽象类来说是不行的。需要先继承,在构造:
class Chinese extends Person{……}
Chinese p = new Person();
  • 类中只要含抽象方法,这个类就是抽象类(要加abstract)abstract class Person{……}
  • 类是抽象类,单它的方法不一定是抽象方法。
  • final修饰的方法是不能被重写的,所以abstract和final不同时修饰
03.0 例子
abstract class Person{
	public abstract void eat();
}
class Chinese extends Person{
	public void eat(){
		Sysout.out.println("使用筷子吃饭")
	}
}

Chinese p = new Chinese();
p.eat();

04. 接口(interface)

  • 语法:interface 接口名称{规则属性,规则的行为}
  • 接口是抽象的
  • 属性是静态的,行为是抽象的
  • 接口和类是两个层面的东西
    • 接口可继承其他接口
    • 类的对象需要遵循接口,在java中,则称之为实现(implement)。即:类需要实现(多个)接口。
04.0 案例
	interface USBInterface{
	
	}
    // 下面的规则符合USBInterface,行为就是powerXXX();
    // 接口中的行为powerXXX是抽象的
	interface USBSupply extends USBInterface{
		public void powerSupply();
	}
    interface USBReceive extends USBInterface{
        public void powerReceive();
    }
    // 电脑类中有两个USB接口,接口的功能是提供电源
    class Computer implements USBSupply{
        public USBReceive usb1;
        public USBReceive usb2; 
        public void powerSupply(){
            System.out.println("电脑提供能源");
            usb1.powerReceive();
            usb2.powerReceive();
        }
    }
    // 灯
    class Light implements USBReceive{
        public void powerReceive(){
            System.out.println("电灯接受能源");
        }
    }
    // main中实现
    Computer c = new Computer();
    Light light = new Light();
    c.usb1 = light;
    c.powerSupply();

05. Bean规范

  • 类要求必须含有无参,公共的构造方法
  • 属性必须私有化,有提供getXXX(),setXXX()方法

06. 对象数组

  • 声明方式:类型[] 变量 即:String[] names
  • 数组创建:new 类型[容量] 即:new String[3]
String[] names = new String[3];
// 或者声明时,直接赋值
String[] nums = {"1","3","5"};

07. 字符串类

  • 源于java.lang.String,系统自动加载的
String name = "这是字符串";
07.0 比较
  • 完全相等(包括大小写)a.equals(b)
  • 相等(不考虑大小写)a.equalsIgnoreCase(b)
  • 比较大小:a.compareTo(b)
07.1 截取(substring)
String s = "01234  6789";
s.substring(0,3); //截取0-2,不包含3
s.substring(6);//只传一个参数,表示截取到末尾。6-9
07.2 分割(split)
String s = "01234 6789";
String[] s1 = s.split(" ");//按空格来分割字符串
System.out.println(s1.length);
for(String s2:s1){
	System.out.println(s2);
}
07.3 去掉空格(trim)
  • 这是去掉字符串首尾空格
String s = " H e l l o ,mygoodfriend ";
System.out.println(s.trim());
System.out.println("!"+s.trim()+"!");
07.4 替换(replace、replaceAll)
  • 替换所有:replace
String s = "Hello World, World Li";
System.out.println(s.replace("World","Java");
  • 按照自己的规则替换:replaceAll
    如果我想将World,Li这两个都替换成Java,就按下面操作:
String s = "Hello World, World Li";
System.out.println(s.replaceAll("World|Li","Java");
07.5 大小写转换(toLowerCase、toUpperCase)
String s = "Hello mygoodfriend";
System.out.println(s.toLowerCase());
System.out.println(s.toUpperCase());

如果只想将username的第一个u变成大写,怎么操作:

String name = "username";
String s1 = name.substring(0,1);
String s2 = name.substring(1);
System.out.println(s1.toUpperCase() + s2);
07.6 查找(charAt、indexOf)
  • charAt:通过索引找到指定位置的字符
String s = "Hello, my friends";
System.out.println(s.charAt(0));
  • indexOf:查找字符串第一次出现的下标
String s = "Hello, my friends";
System.out.println(s.indexOf("my"));
  • lastIndexOf:获取字符串最后一次出现的下标
String s = "Hello, my friends";
System.out.println(s.lastIndexOf("friends"));
07.7 判断包含(contains())
  • contains:判断是否包含指定的字符串,返回布尔类型
String s = "Hello, my friends";
System.out.println(s.contains("mygood"));
System.out.println(s.contains("friends"));
07.8 判断空(isEmpty())
String s = "Hello";
System.out.println(s.isEmpty());
String str = "";
System.out.println(str.isEmpty());

08. 字符串StringBuilder

  • 这个StringBuilder是为了优化拼接操作时应持续创建新的空间造成的利用率不高。
  • StringBuilder 构建字符串,是个类,提供了大量的字符串操作。
StringBuilder s = new StringBuilder();
for(int i=0;i<100;++i){
	s.append(i);	
}
System.out.println(s.toString());
  • 上面代码的效率就是比下面的效率高
String s = "";
for(int i=0;i<100;++i){
	s = s+i;	
}
System.out.println(s);
08.0 添加(append())
StringBuilder s = new StringBuilder();
s.append("abc");
08.1 转成字符串(toString())
StringBuilder s = new StringBuilder();
s.append("abc");
System.out.println(s.toString());
08.1 长度(length())
StringBuilder s = new StringBuilder();
s.append("abc");
System.out.println(s.length());
08.2 翻转(reverse())
StringBuilder s = new StringBuilder();
s.append("abc");
System.out.println(s.reverse());
08.3 插入(insert())
StringBuilder s = new StringBuilder();
s.append("012");
System.out.println(s.insert(1,"dr")); // 在下标为1的地方插入字符串dr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值