鄙人专科学识,才学书浅,大二段位,目前自诩青铜段位,应老师要求,每月持续更新一次博客。
所有观点仅我所认知,如果有任何写错的地方,望海涵,谨记!
简单说,学java必须明白一门语言需要编程思想,而编程思想不是靠道听途说,只有孜孜不倦的练习,加上汗水以及天赋,你才能称作为程序员吧!个人观点,谢谢!
题外话说完,正文开始:
大学入门第一次接触java,大家一定都是helloworld开始的,我也不例外。
不过,如此简单的程序就不需要书写了吧。
那么,接下来,介绍基本数据类型。
Java基本数据类型
整型
byte(-128~127) 内存(1字节) Byte
short(-32768~32767) 内存(2字节) Short
int(-21亿~21亿) 内存 (4字节) Integer
long(-9223372036854775805~9223372036854775807) 内存(8字节) Long
浮点型
float(-3.4028235E38~3.4028235E38) 内存(8字节) Float
double(-1.79769313486231570E-308~-1.79769313486231570E+308) 内存(8字节) Double
字符型
char(0~65535) 内存(2字节) Character
布尔型
boolean(true/false) Boolean
一、字符串String()
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String str="helloworld";//0123456789 java以0为开头索引
char ch = str.charAt(0);//在某个字符的位置 -- h
String str2="Helloworld";
boolean b = str.equals(str2);//判断字符串是否相同 -- false
int w = str.indexOf("o");//获取指定字符串在目标字符串中首次出现的位置(索引),如果没有,返回-1 --4
String str3="*";
String concat = str.concat(str3);//字符串相加,会在需要串联字符最后的位置相加 --helloworld*
//oldChar:原字符,newChar:新字符 (替换) 如果原字符没有,那么不替换 --hellojava
String replace = str.replace("wold", "java");
String replaceAll = str.replaceAll("helloworld", "java");//替换全部原字符,前提原字符包含所有被替换字符,否则无效--java
String str4=" hello java ";
String trim = str4.trim();//仅去除前后空格 --hello java
int compareTo = str.compareTo(str4);//字符串比较,会通过字符串大小依据字典顺序比较 -- 72
int lastIndexOf = str.lastIndexOf("d");//获取指定字符串在目标字符串中最后的第一次出现的位置,如果没有,返回-1 -- 9
System.out.println((int) 'a');//强制转换成整数型,所代表的是ASCII码 -- 96
String str5="hello";
boolean contains = str.contains(str5);//判断是否包含另一个字符串 --ture
boolean startsWith = str.startsWith("h");//判断是否以某个字符开头 --true
boolean endsWith = str.endsWith("d");//判断是否以某个字符结束 --true
//按照字符串分隔,转换成字符串数组,如果直接输出得到地址值[Ljava.lang.String;@7852e922 --@7852e922 哈希算法得到的值
//地址值相当于邮箱形式,那么想要得到数据,必须遍历输出
String str6="hikktn-age";
String[] split = str6.split("-");
//普通for循环遍历
for(int i=0;i<split.length;i++) {
System.out.println(split[i]);
}
//增强for循环遍历
for (String s : split) {
System.out.println(s);
}
//API遍历--顺序排序
System.out.println(Arrays.toString(split));//[hikktn, age]
System.out.println(Arrays.sort(split));//[age,hikktn] 倒序排序
String upperCase = str.toUpperCase();//转换成大写String lowerCase = str.toLowerCase();//转换成小写byte[] bytes = str.getBytes();//转换成Byte数组String substring = str.substring(0,4);//截取字串,第一个参数开始位置,第二个参数是结束位置,前闭后开}}
注意:String是唯一不可变的变量
数组的声明以及赋值
public class Main2 {
public static void main(String[] args) {
// 一维数组
String[] strs = new String[] { "a", "b", "c" };
int[] num = new int[2];
num[0] = 1;
num[1] = 2;
// num[2]=3;ArrayIndexOutOfBoundsException 下标越界异常
String[] str2 = { "a", "b", "c" };
// 二维数组
String[][] infos = { { "1", "23", "456" }, { "78", "9", "10" } };
String infos2[][] = new String[2][3];// 2--行数 3--元素个数
// 遍历打印表格
for (int i = 0; i < infos.length; i++) {
for (int j = 0; j < infos[i].length; j++) {
System.out.print(infos[i][j] + "\t");
}
}
}
}
常用数据类型转换
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main3 {
public static void main(String[] args) {
// 基本类型转换成字符串
int num1 = 20;
String s = String.valueOf(num1);
// 字符串转换成数组 String → String[]
String str = "abc";
String count = "";
for (int i = 0; i < str.length(); i++) {
if (i < str.length() - 1) {
count += String.valueOf(str.charAt(i)).concat(",");
} else {
count += String.valueOf(str.charAt(i));
}
}
String[] infos = count.split(",");
// 字符串转换成char类型数组 String → char[]
// char[] toCharArray()
// 将此字符串转换为新的字符数组
char[] strChar = str.toCharArray();
// 字符串转换成byte数组 String → byte[]
byte[] strByte = str.getBytes();
//char类型转换int类型 char → int -- ascii码 97
char c='a';
int a=(int) c;//强转
// Char类型数组转换int类型数组 char[] → int[]
char[] chs = { '3', '4', '5', '6' };
int chsInt[] = new int[chs.length];// chsInt[4]
for (int i = 0; i < chsInt.length; i++) {
// static int parseInt(String s)
// 将字符串参数解析为带符号的十进制整数
chsInt[i] = Integer.parseInt(String.valueOf(chs[i]));
}
//char数组转换String类型 char[] → String
char[] chs2= {'j','a','v','a'};
String strChs21=String.valueOf(chs2);//方式一
String strChs22=new String(chs2);//方式二
String strChs23=String.copyValueOf(chs2);//方式三
//String类型转换StringBuffer
//public final class StringBuffer
//线程安全,可变的字符序列 字符串缓冲区 效率低 特殊情况使用
String str2="java";
StringBuffer sb=new StringBuffer(str2);
//StringBuilder类型转换String
//public final class StringBuilder
//线程不安全,不可变的字符序列 效率快 通常情况下推荐使用
StringBuilder sb2=new StringBuilder("java");
String str31=sb2.toString();//方式一
String str32=String.valueOf(sb2);//方式二
//数组类型转换int类型 String → int
String num="123";//前提string内容必须为整数型,否则抛出NumberFormatException异常
int intNum =Integer.parseInt(num);//方式一
Integer intNum2 =Integer.valueOf(num);//方式二,类型为Integer,可调用Integer方法
//字符串转换时间类型 String → Date
String str4="2018-5-29 19:13:00";
//public class SimpleDateFormat
//SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期
SimpleDateFormat sd =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
// Date parse(String text, ParsePosition pos)
// 从字符串中解析文本以产生一个 Date
Date date =sd.parse(str4);
} catch (ParseException e) {
e.printStackTrace();
}
//Date → String
Date date2 =new Date();
// format(Date date, StringBuffer toAppendTo, FieldPosition pos)
// 将给定的 Date成日期/时间字符串,并将结果追加到给定的 StringBuffer
String str5=(new SimpleDateFormat("yyyy-MM-dd")).format(date2);
}
}
Math目前常用的方法
Math.random();//取得0<=x<=1的随机double类型数
public class Main4 {
String name="hikktn";//成员变量/全局变量
static final String GENDER ="BOY";//常量
final int AGE=1;
public static void main(String[] args) {
String email ="qq.com";//局部变量
int a;//单个变量定义
int b=2;//单个变量初始化
String Name = getName(GENDER);
System.out.println(Name);
}
@SuppressWarnings("unused")
private static String getName(String sex) {
Main4 m=new Main4();
return m.name;
}
}
自增、自减运算符
int b=++a; → a =a+1; b==a; 相当于如果a=0,只要这条代码运行,a在之前都会先加一后输出打印,得到结果为1
int b=a++; → b==a; a=a+1; 相当于如果a=0,一旦这条代码运行,a都会先输出打印后,在进行下次运行时,才会加一,执行一次结果为0
逻辑运算符
&&(且) || (或) ! (非)
三目运算符
格式:条件 ? 条件为true执行 : 条件为false执行
public class Main5 {
public static void main(String[] args) {
int n=3,m=10;
int maxNum= n>m ? n:m;//单层写法
System.out.println(maxNum);//maxNum -- 10
//与下方if... else 相同作用
if(n>m) {
System.out.println(n);
}else {
System.out.println(m);
}
int num=4;
String str=num != 0 ? num % 2 == 0 ? "是偶数" : "是奇数" : "是0";//多层写法
System.out.println(str);//是偶数
//与下方if... if... else... else 相同作用
if(num!=0) {
if(num % 2 ==0) {
System.out.println("是偶数");
}else {
System.out.println("是奇数");
}
}else {
System.out.println("是0");
}
}
}
StringBuffer方法
append(s):将指定的字符串追缴到此字符序列
reverse():字符串反转形式取代
delete(int start,int end):移除此序列的子字符串(end)中的字符
Integer对象方法
Integer.parseInt():转换为整数型,int基本数据类型
Integer.valueOf():返回一个整数型对象,返回一个int值(保存的值)
封装方法的原则:高内聚,低耦合