一、想对你说
(1)之前一直有小伙伴让我总结下Java相关的知识点,这里我针对有一定Java基础的同学做了一个系列的总结,感兴趣的同学可以看看顶部的【Java专栏】希望对大家有所帮助。
(2)要是对您有所帮助的话,可以给 “大大大钢琴” 点个赞,这是我继续下去的动力,谢谢大家了!废话不多说了,直接上干货。
二、类型转换
1、Java的基本数据类型包括八种:
整数类型(byte,short,int long)、浮点数类型(double,float)
布尔类型(boolean)、字符类型(char)
2、类型从小到大依次为:
byte、short、int、long、float、double、(char)
3、自动(隐式)类型转换:从小类型到大类型,不需要强制转换符
int a = 5 ; doubule b =a ;
4、强制类型转换:从大类型到小类型,需要强制转换符实现强制转换
doubule a = 5.123 ; int b = (int) a ;
5、关于byte、short、char赋值与运算的强转规则:
(1)不参与运算,整数直接量可以直接赋值给byte,short,char,不需要强转。
(2) byte,short,char型变量参与运算时,需要强转
byte b1 =5; byte b2 =2; byte b3 =(byte)(b1 + b2 );
(一)Booleen和String互相转换
public class test_demo {
public static void main(String[] args) {
//*********布尔值(booleen) 转 字符串(string)************
//方法1:String.valueOf()方法将布尔值转换为String
boolean b1=true;
String s1=String.valueOf(b1);
System.out.println("bool转string:"+s1);
System.out.println("数据类型:"+s1.getClass());
//方法2:Boolean.toString()方法将布尔值转换为String
boolean b2=false;
String s2=Boolean.toString(b2);
System.out.println("bool转string:"+s2);
System.out.println("数据类型:"+s2.getClass());
//*********布尔值(booleen) 转 字符串(string)************
//注意:"true" 或 "TRUE" 将返回布尔值true。除“"true"以外的任何其他字符串值都返回布尔值false。
//方法1:Boolean.parseBoolean
String s1="true";
String s2="TRue";
String s3="ok";
boolean b1=Boolean.parseBoolean(s1);
boolean b2=Boolean.parseBoolean(s2);
boolean b3=Boolean.parseBoolean(s3);
System.out.println(b1);//true
System.out.println(b2);//true
System.out.println(b3);//false
//方法1:Boolean.valueOf
Boolean bb1=Boolean.valueOf(s1);
Boolean bb2=Boolean.valueOf(s2);
Boolean bb3=Boolean.valueOf(s3);
System.out.println(bb1);//true
System.out.println(bb2);//true
System.out.println(bb3);//false
}
}
(二)Int和String互相转换
1、int转string
(1)使用num + ""、(2)使用String.valueOf(num)方法、(3)使用Integer.toString(num)方法
2、string转int
(1)Integer.parseInt(String)、(2) Integer.valueOf(String)方法
差异:valueOf(String)方法会返回Integer类的对象,而parseInt(String)方法返回原始的int值
public class test_demo {
public static void main(String[] args) {
//*********布尔值(int) 转 字符串(string)互相转换************
int num = 100;
String str1 = num + ""; //方法1:
String str2 = String.valueOf(num); //方法2:
String str3 = Integer.toString(num);
System.out.println("int转string: " + str1);
//*********字符串(string) 转 布尔值(int)互相转换************
String str = "123";
int inum = 100;
int inum1 = Integer.parseInt(str);//方法1:使用parseInt()方法
int inum2 = Integer.valueOf(str);//方法2inum1
int sum = inum + inum1 + inum2;
System.out.println("string转int: " + sum);
}
}
(三)Float和String互相转换
public class test_demo {
public static void main(String[] args) {
//*********浮点型(float) 转 字符串(string)************
float a = 3.1415f;
//Float.toString
String result = Float.toString(a);
System.out.println("结果" + result);
System.out.println("数据类型" + result.getClass());
//*********字符串(string) 转 浮点型(flot)************
String s="23.6";
float f=Float.parseFloat("23.6");
System.out.println("结果:" + f);
}
}
(四)数组[] 和 集合{} 互相转换
注意:查看数组和集合之间的区别
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class test_demo {
public static void main(String[] args) {
//*********数组 转 集合************
int[] arr = {1, 3, 4, 6, 6};//集合为{}、数字[]
Arrays.asList(arr);//Arrays.asList(数组)
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
//*********集合 转 数组************
List list = new ArrayList();
list.add("a");
list.add("b");
list.toArray();
System.out.println("集合转数组:"+list.toString());
//注意:定义数组类型的时候定义为父类,而存进数组为父类的子类
father[] fathers = new father[2];
fathers[0] = new son();
fathers[1] = new son2();
System.out.println("定义类:"+fathers.toString());
/*相同:数组和集合都是java中的容器。
区别:
1、数组特点:
(1)大小固定,只能存储相同数据类型的数据
(2)数组是静态的,一个数组实例具有固定的大小,一旦创建了就无法改变容量了,而且生命周期也是不能改变的,还有数组会做边界检查
(3)数组声明了它容纳的元素的类型,而集合不声明。
(4)数组的存放的类型只能是一种,Object数组可以存多种类型;
(5)数组是java语言中内置的数据类型,是线性排列的数组,所有可以快速访问其他的元素。
2、集合特点:
(1)大小可动态扩展,可以存储各种类型的数据
(2)而集合的长度是可变的,可以动态扩展容量,可以根据需要动态改变大小,集合提供更多的成员方法,能满足更多的需求。
(3)集合存放的类型可以不是一种,只可以存储对象,也可以存储基本数据类型,但必须是基本类型的包装类(不加泛型时添加的类型是Object)。
(4)集合可以存放不同类型的引用类型,因为存入集合的元素都被转化成了Object类型,之后再引用集合中的类型需要强制类型转换,这就导致了集合的类型不安全,以及类型转化的性能损耗*/
}
public static class father {
int i = 0;
}
public static class son extends father {
int x = 0;
}
public static class son2 extends father {
int y = 0;
}
}
(五)json转map(6种)
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import java.util.Map;
public class test_demo {
public static void main(String[] args) {
//前端传给我们的往往是json串,那我们如何转化为map或者map数组呢?废话少说,上代码:
String str = "{\"0\":\"zhangsan\",\"1\":\"lisi\",\"2\":\"wangwu\",\"3\":\"maliu\"}";
//第一种方式:(Map)JSON.parse
Map maps = (Map)JSON.parse(str);
System.out.println("第一种方式:用JSON类来解析JSON字符串");
for (Object map : maps.entrySet()){
Object key =((Map.Entry)map).getKey();
Object value =((Map.Entry)map).getValue();
System.out.println(key+" : " +value);
}
//第二种方式:JSONObject是Map接口的一个实现类
Map json = (Map) JSONObject.parse(str);
System.out.println("\n第二种方式:用JSONObject类的parse方法来解析JSON字符串");
for (Object map : json.entrySet()){
Object key =((Map.Entry)map).getKey();
Object value =((Map.Entry)map).getValue();
System.out.println(key+" : " +value);
}
//第三种方式:JSON.parseObject
Map mapType1 = JSON.parseObject(str);
System.out.println("\n第三种方式:用JSON类的parseObject来解析JSON字符串");
for (Object obj : mapType1.keySet()){
System.out.println(obj+" : " +mapType1.get(obj));
}
//第四种方式:JSON.parseObject(json, map.class)
Map mapType2 = JSON.parseObject(str,Map.class);
System.out.println("\n第四种方式:用JSON类,指定解析类型,来解析JSON字符串");
for (Object obj : mapType2.keySet()){
System.out.println(obj+" : " +mapType1.get(obj));
}
//第五种方式:JSONObject是Map接口的一个实现类
Map mapType3 = JSONObject.parseObject(str,Map.class);
System.out.println("\n第五种方式:用JSONObject的parseObject方法并执行返回类型来解析JSON字符串");
for (Object object: mapType3.entrySet()){
Object key =((Map.Entry)object).getKey();
Object value =((Map.Entry)object).getValue();
System.out.println(key+" : " +value);
}
//第六种方式: JSONObject是Map接口的一个实现类
JSONObject jsonObject = JSONObject.parseObject(str);
System.out.println("\n第六种方式:用JSONObject的parseObject方法来解析JSON字符串!!!");
for (Object object : jsonObject.entrySet()){
Object key =((Map.Entry)object).getKey();
Object value =((Map.Entry)object).getValue();
System.out.println(key+" : " +value);
}
System.out.println(json);
}
}
(六)json转map 和 json转list
import com.alibaba.fastjson.JSONObject;
import java.util.List;
import java.util.Map;
public class test_demo {
public static void main(String[] args) {
//json首先是转map(“006-json转map(6种)”:上有6种转换方法,这里只取其中一个)
String json1 = "{\"0\":\"zhangsan\",\"1\":\"lisi\",\"2\":\"wangwu\",\"3\":\"maliu\"}";
Map map= JSONObject.parseObject(json1);
System.out.println(map);
//jsonb转map数组
String json2 = "[{\"0\":\"zhangsan\"}]";
List<Map> mapList = JSONObject.parseArray(json2, Map.class);
for(Map map1 : mapList){
System.out.println(map1);
}
}
}
(七)JSONArray 转换 string
在 Java 中,可以使用 JSON 库(如 org.json 或 Jackson)将 JSONArray 转换为字符串。以下是一个使用 org.json 库的示例
import com.alibaba.fastjson.JSONObject;
import org.json.JSONArray;
public class test_demo {
public static void main(String[] args) {
//创建JSONObject对象
JSONObject json = new JSONObject();
//向json中添加数据
json.put("username", "大大大钢琴");
json.put("age", 24);
//创建JSONArray数组,并将json添加到数组
JSONArray array = new JSONArray();
array.put(json);
//转换为字符串
String jsonStr = array.toString();
System.out.println(jsonStr);
}
}
(八)JSONObject转换string方法实例
在 Java 中,可以使用 JSON 库(如 org.json 或 Jackson)将 JSONObject 转换为字符串。以下是一个使用 org.json 库的示例:
import org.json.JSONObject;
public class JSONObjectToStringExample {
public static void main(String[] args) {
// 创建一个 JSONObject
JSONObject jsonObject = new JSONObject();
jsonObject.put("name", "John");
jsonObject.put("age", 30);
jsonObject.put("city", "New York");
// 将 JSONObject 转换为字符串
String jsonString = jsonObject.toString();
// 输出转换后的字符串
System.out.println(jsonString);
}
}