Java入门学习笔记

突然从python转过来感觉还有点不习惯…虽然我python也只会个皮毛…

强制转换:
目标数据类型 数据名 = (目标数据类型) 强制转换的数据
例: long num = (long) 100; 把int转为long型
bollean类型不能强制转换

byte/short/char在进行加减法运算时会被先变成int类型
一旦运算中有不同类型的数据,那么结果是范围大的那种类型
字符串用String定义 注意大写

用byte/short/char定义数据时,如果右侧赋值没有超过范围,则会自动转换成相应的类型,如果超过了范围会报错

定义数组:
数组类型 [] 数组名称 = new 数组类型[长度];
数组类型 []数组名称 = new 数组类型[]{元素}
数组类型 [] 数组名称 = {元素}

直接打印数组,得到的是数组对应的内存地址的哈希值
数组长度:array.length
数组的长度在程序运行期间不可以发生改变

类和对象
创建对象:Person p = new Person()
写成员方法不能写static,普通方法要加static
间接访问私有成员变量,要通过set/get+首字母大写的成员变量的方法,boolean类型的get方法变成is+首字母大写的成员变量,set不变。(可用generate自动生成)
构造方法:public 类名(参数){方法体}(可用generate生成无参和有参构造)

用this.成员变量访问成员变量,不然会根据就近原则访问(一般用于防止出现重名变量而就近访问)
当一个对象作为参数传到方法中时,真正传进去的是对象的地址值。
匿名对象只能使用一次,下次将不得不创建一个新的对象。例如:

new Person("赵丽颖");
new Person().getName();

由于第二次是新new了一个对象,所以它用不了第一次的值,得出的结果是null.

一个标准的类一般有以下四个部分:
1.所有的成员变量都用private修饰
2.为每个成员变量编写一对set/get方法
3.编写一个无参构造方法
4.编写一个有参构造方法

引用类型的一般使用步骤:
1.导包
2.创建对象:类名称 对象名 = new 类名称()
3.使用:对象名.成员方法名

Scanner类(从键盘输入)
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
char num = sc.next();

Random类:
Random r = new Random();
r.nextInt();
ArrayList类:

ArrayList<E>() 名称 = new ArrayList<>()
<E>代表泛型,也就是集合中的元素全都是统一的什么类型,泛型只能是引用类型,不能是基本类型

对于ArrayList集合来说,直接打印得到的不是地址值而是内容(类似于python的列表),如果内容为空,得到的是空的括号[]

向集合中添加/读取/删除元素

添加元素:list.add(),参数类型与泛型一致,返回值代表是否添加成功,对于ArrayList集合来说添加一定成功,返回值可用可不用,但是对于其他集合添加不一定成功
获取元素:list.get(i)
删除元素:list.remove(i)
获取集合中元素的个数:list.size()

如果希望向集合中添加基本类型元素,要使用基本类型的包装类,一般为首字母大写即可,如float→Float,有两个特殊的:int→Integer char→Character

字符串的特点:
1.字符串的内容永不可变(常量)
2.正是因为不可改变,所以字符串可以共享使用
3.字符串效果上是char[]字符数组,但是底层原理是byte[]字节数组

创建字符串的常见3+1种方式:

1.空参,表示创建了一个空的字符串
String sr = new String();

2.输出的是ABC
char [] charArray = {'A','B','C'}
String sr = new String(charArray)

3.
byte [] byteArray = {98,97,96}
String sr = new String(byteArray)

+1:最常见的
String s = "ABC"//这样定义的字符串在字符串常量池中

s == sr返回的是false,因为比较的是地址值,s在字符串常量池种而sr是new出来的不在池中,因此地址值不同

字符串的相关操作

1.比较字符串的内容
从前面我们已经知道了==是用来判断地址值是否相同的,用equals比较字符串的内容

str1.euqals(str2)
str1.euqalsIgnoreCase(str2) //不区分大小写进行比较
str1,str2可以是常量或者变量,推荐常量写在前面,变量写在后面,不然如果是null.equals(str1) 会报错

同时也可以用Objects.equals()来比较内容是否相同,好处是该比较方法不会在字符串为null时报错。

2.字符串获取相关方法

String str1 = "hello"
String str2 = "world"
str1.length() //求字符串的长度
str1.concat(str2) //拼接字符串
str1.charAt(i) //获取字符串第i个位置的字符
str1.indexOf(str2) //获取str2在str1中第一次出现的位置,如果没有就返回-1

3.截取字符串

String str1 = "Hello world"
str1.substring(3);//从第三个位置开始截取字符串一直到末尾
str1.substring(3,5);//从第三个位置开始截取字符串一直到第五个,左闭右开

注意一点:

String str1 = "hello"
str1 = "Java"
//不是字符串发生了改变,而是str1中保存的地址发生了变化,要时刻记住字符串常量不会发生变化,str1中保存的是字符串的地址值

4.字符串转换

String str1 = "Hello";
char [] chararray1 = str1.toCharArray()//将当前字符串拆分成字符串数组并返回
byte [] bytes = str1.getBytes()//获得当前字符串底层字节数组
str1.replace(oldstring,newstring)//替换字符串

5.字符串分割

String str1 = "aaa,bbb,ccc,ddd";
String [] arrray = str1.split(",");//按逗号分割返回字符串数组

注意:split()方法的参数其实是一个正则表达式,现在要注意的是如果按照".“进行切分,那么必须要写”\."

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值