数据类型
java有8种基本类型:
4整型:int、short、long、byte
2浮点型:float、double
1字符型:char
1boolean类型:boolean
特别的:
长整型后缀为L,8进制数前缀为0,16进制数前缀为0x,单精度浮点数(float)后缀为F,双精度浮点数(double)后缀为D,浮点数默认为double。
java7之后,2进制数前缀为0b,且数字间可加下划线_,易于阅读。如:0b1111_0000_0010_1000。
常量Double.POSITIVE_INFINITY、Double.NEGATIVE_INFINITY、Double.NaN分别表示正无穷大、负无穷大、NaN。
变量
变量命名规则,只需记住:名不能是关键字、见名知意、别用一些特殊的符号。(PS:其可用的哪些符号没必要记,因为26字母加_的组合就足够用了,所以没必要记)。一个项目中所有的变量名规则一致。如:驼峰命名。
使用变量前,注意要初始化变量。
常量
final关键字定义常量,类常量用static final定义,常量在定义时就初始化,且值不能更改。
习惯的,常量名通常全大写(这是约定不是约束)
测试代码:
public class Test {
public static void main(String[] args)
{
int varInt = 4;
System.out.println(varInt);
short varShort = 4;
System.out.println(varShort);
long varLong = 4L;
System.out.println(varLong);
byte varByte = 4;
System.out.println(varByte);
float varFloat = 1.2F;
System.out.println(varFloat);
double varDouble = 1.2D;
System.out.println(varDouble);
boolean varBoolean = true;
System.out.println(varBoolean);
int varInt8 = 0456;
System.out.println(varInt8);
int varInt16 = 0x14C;
System.out.println(varInt16);
int varInt2 = 0b1001;
System.out.println(varInt2);
final double MAX = Double.POSITIVE_INFINITY;
System.out.println(MAX);
final double MIN = Double.NEGATIVE_INFINITY;
System.out.println(MIN);
final double NAN = Double.NaN;
System.out.println(NAN);
}
}
测试结果:
4
4
4
4
1.2
1.2
true
302
332
9
Infinity
-Infinity
NaN
运算符
基本上,所有的语言的运算符都是一样的。不详细介绍了,简单列一下。
+、-、*、/、%、++、--、==、!=、<、>、<=、>=、&&、||、!
三元运算: 条件?表达式1:表达式2;
位运算
数值类型间转换
强制类型转换:(类型)变量。如:(int)c
运算符级别
不用记,用()来划分自己想要的运算优先级。如:(1+2)*(3+4)/5。
若有人问你关于运算符优先级的问题,请忽视问题,他没有别的意思,就是想难为你一下。
字符串
java中的Stirng类型的对象是不可修改的,称为不可变字符串。
检测字符串是否相等,不要用==,用equals。
空串和null串不是一个意思。空串是空字符串,null串是没有初始化的字符串变量
常用API
equals:比较两个字符串是否相等。"a".equals("b")
indexOf:查找并返回子字符串的位置,查不到返回-1。"abc".indexOf("a") "abc".indexOf("a',0)
lastIndexOf:从后往前查找,与indexOf相似。
length:返回字符串长度。"abc".length()
replace:替换并返回新的字符串。"abcd".replace("b","e")
startsWith:是否以字符串开头。"abcd".startsWith("cd")
substring:截取并返回新字符串。"abcd".substring(1,3)
toLowerCase:转小写
toUpperCase:转大写
trim:去除字符串两边空格并返回新字符串。" asd ".trim()
构造字符串
使用StringBuilder类可以构造一个空字符串构建器,通过其对象可以动态生成字符串。
常用API
toString:将其对象转为字符串。
length:获取当前字符串长度。
setCharAt:修改指定位置字符。
insert:插入子字符串。
delete:删除子字符串。
测试代码:
public class Test {
public static void main(String[] args)
{
String testStr = "abcdefg";
boolean flag = testStr.equals("aa")?true:false;
System.out.println(flag);
int strIndex1 = testStr.indexOf("aa");
System.out.println(strIndex1);
int strIndex2 = testStr.indexOf("e");
System.out.println(strIndex2);
int strIndex3 = testStr.indexOf("b",2);//从第3个位置查找,默认为0
System.out.println(strIndex3);
int strLen = testStr.length();
System.out.println(strLen);
String strRep = testStr.replace("d","D");
System.out.println(strRep);
boolean startFlag = testStr.startsWith("A");
System.out.println(startFlag);
String strSub = testStr.substring(2,5);
System.out.println(strSub);
String strUpper = testStr.toUpperCase();
System.out.println(strUpper);
String strLower = strUpper.toLowerCase();
System.out.println(strLower);
String str = " abcd ";
String strTrim = str.trim();
System.out.println(str);
System.out.println(strTrim);
StringBuilder builder = new StringBuilder();
builder.append("测试代码");
String strBuilder = builder.toString();
System.out.println(strBuilder);
System.out.println(strBuilder.length());
builder.setCharAt(0,'c');
System.out.println(builder.toString());
builder.insert(2,"新");
System.out.println(builder.toString());
builder.delete(0,2);
System.out.println(builder.toString());
}
}
测试结果:
false
-1
4
-1
7
abcDefg
false
cde
ABCDEFG
abcdefg
abcd
abcd
测试代码
4
c试代码
c试新代码
新代码
控制台输入输出
输入
System.in
通过Scanner类读取输入内容。
测试代码:
import java.util.Scanner;
public class Test {
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
System.out.println(str);
int varInt = scanner.nextInt();//只能输入数字
System.out.println(varInt);
}
}
测试结果:
测试
测试
123
123
测试
测试
cs
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at Test.main(Test.java:10)
输出
System.out.println()
输出可以格式化输出,暂不介绍(一般不会去做控制台程序)。
流程控制
java流程控制和其他语言基本一样。
if...else
if..else if...else
...?...:...;(三元运算符,简单的if...else...)
switch(a){case 1:...break;case 2:...break;default:...break;}
while(){...};
do{...}while();
for(int i = 0;i<length;i++;){...}
for(int element : a){...}(类似于for each)
流程中断:break(跳出循环)、continue(跳出本次循环)
注意:多重循环结束所有循环要多重break,若想直接跳出函数可以使用return
数组
定义数组:类型[] 变量名;如:int[] numArr;
定义时初始化:int[] numArr = {1,2,3};未初始化则默认初始化;
定义时指定大小:int[] numArr = new int[10];
匿名函数:new int[]{1,2,3};
注意:数组下标从0开始,使用数组时注意越界问题。
常用API(Arrays类)
toString:将数组中的元素以,隔开的形式组成的字符串。如:1,2,3
corpOf:返回数组指定位置范围内的元素或者是指定长度的元素。
sort:排序
binarySearch:二分搜索查找
fill:重置数组所有元素值。
equals:是否相等(大小、下标相同的元素都相等)