您的位置:首页 > 编程语言 > Java开发

Java整理(一)基础和常用类

2017-10-16 16:24 525 查看

Java编程基础

Java关键字

abstract
assert
boolean
break
byte
case
catch
char
class
const
continue
default
do
double
else
enum
extends
final
finally
float
for
goto
if
implements
import
instanceof
int
interface
long
native
new
package
private
protected
public
return
strictfp
short
static
super
switch
synchronized
this
throw
throws
transient
try
void
volatile
while
assert,用来进行程序调试,断言条件是否满足
const,保留
goto,保留
native,方法用非Java代码实现
strictfp,浮点数比较使用严格的规则
synchronized,同一时间只有一个线程访问
transient,不序列化字段
volatile,标记字段可能被多个线程访问而不做同步,当一个共享变量被volatile修饰时,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,它会去内存中读取新值。
true、false、null不是关键字,是显式常量

一些概念

Java SE(面向对象、API、JVM…)
Java EE(JSP、EJB、服务器…)
Java ME(移动设备、游戏、通信…)
JVM(Java Virtual Machine)Java虚拟机,实现跨平台
JDK(Java Development kit)Java开发工具包
JRE(Java Runtime Environment)Java运行时环境
配置环境变量:
       jdk/binjavac.exe  java.exe
 
d58b
      jdk/lib类库文件.jar
       JAVA_HOME配置JDK安装路径
       PATH    配置JDK命令文件位置(bin)
       CLASSPATH      配置类库文件位置(lib)

修饰符

访问控制修饰符
修饰符
本类
同包
子类
其他包
private
Y
 
 
 
default
Y
Y
 
 
protected
Y
Y
Y
 
public
Y
Y
Y
Y
非访问修饰符
static,修饰静态类方法和类变量
final,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
abstract,用来创建抽象类和抽象方法。
synchronized 和 volatile,主要用于线程的编程。
transient,序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。
 

数据类型

byte
1字节
float
4字节
short
2
double
8
int
4
char
2
long
8
boolean
 
整数类型:有符号的以二进制补码表示的整数
浮点数:符合IEEE 754标准的浮点数
char:16 位 Unicode 字符
低  ------------------------------------>  高
byte short char—> int —> long—>float —> double
所有数值类型都有正负号,Java没有无符号的数值类型。
基本类型的包装器类,使得可以在堆中创建一个非基本对象,用来表示对应的基本类型。
BigInteger支持任何精度的整数,BigDecimal支持任何精度的定点数。
 

转义字符

\n    换行 (0x0a)
\r     回车 (0x0d)
\f     换页符(0x0c)
\b    退格 (0x08)
\0    空格 (0x20)
\s     字符串
\t     制表符
\"    双引号
\'     单引号
\\     反斜杠
\ddd       八进制字符 (ddd)
\uxxxx   16进制Unicode字符 (xxxx)

操作符

算术:+,-,*,/,%,++,--
赋值:=,+=,-=,*=,/=,%=
比较:>,<,>=,<=,==,!=,(对象内容比较重写equals()方法,equals默认比较引用,必要时需要覆盖equals方法)
逻辑:&&,||,!,^
条件运算符:(?:)
位运算符:>>,<<,>>>(无符号右移),&(按位与),|(按位或),^(按位异或),~(按位非)。
>>32相当于>>0,移位操作右边的参数要先进行模32(int)/64(long)运算。
&|^两边都是布尔类型则为布尔逻辑运算符(非短路运算)
其他运算符:[],.,(),new,instanceof(A instanceof B //A是否为B的实例)
 
直接常量:L或l代表long,F或f代表float,D或d代表double,
         0X或0x十六进制,前缀0八进制,1.23e-39科学计数法

控制流程

if…,if…else…,if…else if…
switch后小括号值必须整型或字符型(SE7后支持字符串)
while,do-while,for       break,continue,return
for(类型 x: f){}//类似foreach,可用于任何Iterable对象

输入、输出

import java.util.Scanner;
Scanner input = new Scanner(System.in);
int score = input.nextInt();
String str = input.nextLine();
System.out.println();//print()不换行
System类中封装了许多关于系统的信息。

数组

声明:int[]s;s=new int[5]或int[] s = newint[5];
     String str[][] = new String[3][4];
     String s[][] = new String[2][];
s[0] = new String[2];
s[1] = new String[3];
二维数组定义可以只给出行,然后为每一行分别指定列数,列数可以不同为不规则二维数组。
s.length数组长度,可以用foreach循环for(int score: s){…}

常用类

Arrays类

Arrays操作Java中数组,方法都是静态的
import java.util.Arrays;
一些常用方法:
publicstatic void sort(Object[] a)
对指定对象数组根据其元素的自然顺序进行升序排列。
publicstatic void fill(int[] a, int val)
将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。
publicstatic boolean equals(long[] a, long[] a2)
如果两个指定的 long 型数组彼此相等,则返回 true。
publicstatic int binarySearch(Object[] a, Object key)
用二分查找算法在给定数组中搜索给定值的对象(Byte,Int,double等)。

Number类

Java 语言为每一个内置数据类型提供了对应的包装类。
所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类 Number 的子类。char类型包装类为Character 类
Interger.parseInt(str);//将String转为int,或valueOf()
str=””+int;//将int转为String,或toString()
xxxValue()//将 Number 对象转换为xxx数据类型的值并返回。

Math 类

Math 包含了用于执行基本数学运算的属性和方法,Math 的方法都被定义为 static形式,通过 Math 类可以在主函数中直接调用。
abs()返回参数的绝对值。
ceil()对整形变量向左取整,返回类型为double型。
floor()对整型变量向右取整。返回类型为double类型。
rint()返回与参数最接近的整数。返回类型为double。
round()返回一个最接近的int、long型值。
min()返回两个参数中的最小值。
max()返回两个参数中的最大值。
exp()返回自然数底数e的参数次方。
log()返回参数的自然数底数的对数值。
pow()返回第一个参数的第二个参数次方。
sqrt()求参数的算术平方根。
sin()求指定double类型参数的正弦值。
cos()求指定double类型参数的余弦值。
tan()求指定double类型参数的正切值。
asin()求指定double类型参数的反正弦值。
acos()求指定double类型参数的反余弦值。
atan()求指定double类型参数的反正切值。
atan2()将笛卡尔坐标转换为极坐标,并返回极坐标的角度值。
toDegrees()将参数转化为角度。
toRadians()将角度转换为弧度。
random()返回一个随机数,0~1的小数
Random ra = new Random();ra.nextInt();

String类

字符串常量,String对象创建后不能修改,修改其实是创建了新的对象,指向内存空间不同。
intlength()
charcharAt(int index)
byte[]getBytes()
使用平台的默认字符集将此String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
intindexOf(int ch)
Stringsubstring(int)
 

StringBuffer和StringBuilder类

和 String 类不同,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuffer是线程安全,StrignBuilder没有,所以性能略高,一般优先考虑StringBuilder。
常用方法:
publicStringBuffer append(String s)
将指定的字符串追加到此字符序列。
publicStringBuffer reverse()
将此字符序列用其反转形式取代。
publicdelete(int start, int end)
移除此序列的子字符串中的字符。
publicinsert(int offset, Object)
将 Object 参数的字符串表示形式插入此序列中。
replace(intstart, int end, String str)
使用给定 String 中的字符替换此序列的子字符串中的字符。
其他类似String类方法。

Date和SimpleDateFormat类

java.util 包提供了 Date 类来封装当前的日期和时间
Date( )// 使用当前日期和时间来初始化对象
Date(long millisec)//从1970年1月1日起的毫秒数。
System.currentTimeMillis()//获得系统时间毫秒数
boolean after(Date date)
boolean before(Date date)
Object clone( )
int compareTo(Date date)
boolean equals(Object date)
long getTime( )//返回自 1970 年 1 月 1 日 00:00:00 GMT以来此 Date 对象表示的毫秒数。
void setTime(long time)//用自1970年1月1日00:00:00 GMT以后time毫秒数设置时间和日期。
使用 SimpleDateFormat格式化日期
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-ddHH:mm;ss”);
String today = sdf.format(d);
sdf.parse(str);//将字符串解析为时间
字母      描述      示例
G    纪元标记     AD
y     四位年份     2001
M    月份      Julyor 07
d     一个月的日期    10
h     A.M./P.M. (1~12)格式小时  12
H    一天中的小时 (0~23)     22
m    分钟数  30
s      秒数      55
S     毫秒数  234
E     星期几  Tuesday
D    一年中的日子    360
F     一个月中第几周的周几  2 (second Wed. in July)
w    一年中第几周    40
W   一个月中第几周       1
a     A.M./P.M.标记 PM
k     一天中的小时(1~24) 24
K    A.M./P.M. (0~11)格式小时   10
z     时区      EasternStandard Time
'      文字定界符 Delimiter
"     单引号  `

Calendar类

java.util.Calendar是一个抽象类
Calendarc = Calendar.getInstance();//默认是当前日期
c.set(int year, int month, int date, int hourOfDay,int minute,int second)
c.setTime(Date d);
c.set(Calendar.DATE,10);
c.add(Calendar.DATE, 10);
常量      描述
Calendar.YEAR  年份
Calendar.MONTH     月份
Calendar.DATE   日期
Calendar.DAY_OF_MONTH 日期,和上面的字段意义完全相同
Calendar.HOUR 12小时制的小时
Calendar.HOUR_OF_DAY     24小时制的小时
Calendar.MINUTE    分钟
Calendar.SECOND    秒
Calendar.DAY_OF_WEEK     星期几
int year = c.get(Calendar.YEAR);
Date date = c.getTime();
Long time = c.getTimeInMillis();
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: