目录

一、java是什么... 2

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

二、环境配置... 2

1.windows操作系统... 2

三、命令行编译运行... 2

四、基本数据类型... 2

1.常见的基本数据类型... 2

(1)char类型的常用方法... 3

(1)unicode编码和char数据的相互转换... 3

2.数组... 3

(1)数组的声明和定义... 3

(2)数组的初始化... 4

(3)数组的常用方法... 4

3.类型转换... 4

五、语句和表达式... 4

1.运算符和表达式... 4

2.条件语句... 5

3.循环语句... 6

六、类... 6

1.自定义类... 6

(1)一般格式... 6

(2)访问权限... 7

2.内置实用类... 7

(1)输入输出数据的类Scanner 8

(2)字符串String. 8

(2)数学计算... 9

(3)获取时间日期... 10

七、泛型... 10

八、流... 10

九、数据库... 10

十、Applet和xml传值... 10

十一、多线程... 10

十二、网络编程... 10

十三、GUI 10

十四、附录... 10

1.debug. 10

2.反编译和html格式文档... 10

3.导出jar文件... 11

(1)IDE的方式... 11

(2)命令行的方式... 11

正文

一、java是什么

java是一种跨平台的编程语言,也是javaSE、javaEE、Android的基础,但是过渡依赖虚拟机的话可能会带来很大困扰;对程序员来说这是一门极友好的语言。

二、环境配置

1.windows操作系统

下载较新的jdk并安装,在计算机->属性->高级系统设置->环境变量中填写属性,比如:

JAVA_HOME

C:\Program Files (x86)\Java\jdk1.7.0_07

classpath

.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

Path

%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

三、命令行编译运行

虽然现在java代码几乎都用集成的IDE开发工具了,但是有时候IDE也不能解决全部问题(比如远程过程调用,需要手动的在命令行编译运行一些java代码);当.java文件比较庞大时,有必要像文件夹一样用包来管理它们,功能比较相似的.java文件放在同一个包中;下面介绍的是.java带包名的情况,不带包名要简单得多,用javac和java命令即可。

1. 切换到.java文件的目录下

2. 命令行输入命令javac XX.java得到.class文件

3. 在当前目录下按照包名依次建立文件夹,将上面的.class文件剪切到对应的文件夹下

4. 在.java目录下命令行中输入命令java XX的包名.XX,即可运行

四、基本数据类型

const在java中是不再使用的保留字,如果定义常量用static final代替;byte占1个字节有符号位,short有符号位、char占2个字节,int有符号位、float占4个字节保留8位有效数字,long、double占8个字节保留16位有效数字

1.常见的基本数据类型

逻辑

boolean包括true、false

整数

int、long、short、byte

字符

char

浮点数

float、double

null

(1)char类型的常用方法

Character.isLowerCase(‘字符’)

判断该字符是否是小写、类似的函数还有Character.isUpperCase(‘字符’)

Character.toLowerCase(‘字符’)

将该字符转换成小写、类似的函数还有Character.toUpperCase(‘字符’)

(1)unicode编码和char数据的相互转换

unicode即万国码、是一套记录了很多国家文字的字符集;可以使用搜狗输入法的符号大全输入一些奇葩的字符、通过这个办法获取到它的unicode编码,反过来通过unicode编码也可以获取到一些奇葩的字符

通过字符获取unicode编码

“(int)字符”可以得到字符在unicode表中的位置、范围是0-65535,再将这个数据转换为四位数字的16进制编码

通过unicode编码获取字符

“\u四位数字的编码”

2.数组

可以把类型相同的数据可以当作一个数组;数组、对象、接口都属于引用型变量,地址是System.out.println(""+数组名);,通过.length可以访问数组的长度;数组名相互赋值、即相互引用,操作的是同一个对象

(1)数组的声明和定义

//声明一个数组

int[] a,b;

float[][] c,d;

//使用数组前必须先分配空间,声明数组、分配空间也可以同时完成;Java中可以用int类型变量指定数组空间的大小

a=new int[4];

b=new float[3][4];

int[] c=new int[5];

int d=55;

int[] e=new int[d];

//多个不同长度的数组也可以构成一个多维数组

Int[][] a=new int[3][];

a[0]=new int[6];

a[1]=new int[12];

a[2]=new int[8];

(2)数组的初始化

int[] a={0,1,2,3,4};

//或者

int[] a=new int[5];

a[0]=0;

a[1]=1;

a[2]=2;

a[3]=3;

a[4]=4;

(3)数组的常用方法

Arrays.sort(数组名);

将数组从小到大排列

Arrays.toString(数组名);

输出排序后的结果

Arrays.binarySearch(数组名,要查询的数据);

返回数据在数组中的下标,返回负数表示数组中没有这个数据

3.类型转换

(1)数值类型间的转换

byte short char int long float double,由低到到会自动转换,否则使用“(类型)要转换的变量”;float类型的正确赋值方式是float a=3.14f、3.14默认是double类型的。

五、语句和表达式

1.运算符和表达式

和CC++几乎相同,另外某个类创建的对象满足“对象 instanceof 类==true”,下表描述的是运算符的优先级:

优先级

运算符

结合性

1

[] () . , ;

右到左

2

intanceof ++ -- !

左到右

3

* / %

左到右

4

+ -

左到右

5

>> << >>>

左到右

6

< <= > >=

左到右

7

== !=

左到右

8

&

左到右

9

^

左到右

10

|

左到右

11

&&

左到右

12

||

左到右

13

?:

左到右

14

=

右到左

2.条件语句

不太容易理解的是switch…case语句,这个逻辑是:先计算表达式的值,如果这个值和case后面的某个常量相等,就执行后面的若干个语句、直到遇到break为止

switch (表达式) {

case 常量0:

语句块0

break;

case 常量1:

语句块1

break;

...

case 常量2:

语句块2

break;

default:

break;

}

3.循环语句

break将结束一个循环体、continue表示继续循环但是跳到下一次

//加强型for循环

char[] a= {'土','地','很','肥','沃'};

for(char tmp:a) {

System.out.println(tmp);

}

六、类

成员变量默认是public的,同一个包下面的类省略包名也可以相互访问;如果一个内存空间没有被引用,那它就会被系统当作垃圾回收掉,相互赋值会有这种情况发生,强制让虚拟机执行垃圾回收的方法是System.gc();;

1.自定义类

函数体中操作的是函数参数的拷贝,操作不会改变传入参数的变量、引用类型的参数除外;成员变量中有static的是类变量、否则是实例变量,类变量可以在多个类中共享数据(变量的生命周期发生了变化),类似的有实例方法和类方法,实例方法必须通过对象调用、类方法可以直接通过类名调用(如果一个方法不需要类中的其他实例变量就可以考虑设计成类方法);this指代当前对象,尤其是成员变量和局部变量冲突时、这个关键字会非常有用,但是不能用在类变量、类方法前

(1)一般格式

①无继承

访问权限 class 类名{

//成员变量的声明或定义

访问权限 基本数据类型 变量0,变量1…,变量n;

访问权限 已知类 变量0,变量1…,变量n;

//构造函数,可以没有由系统提供默认的构造函数

类名(参数列表){

语句块;

}

//功能函数的定义,也可以是重载函数(函数名相同、返回值或参数列表不同)

访问权限 基本数据类型或已知类 函数名(参数列表){

语句块或含有return的语句块;

}

}

②继承

Java不支持多继承,一个子类只能有一个父类,所有类默认是Object的子类

访问权限 class 子类的名称 extends 父类的名称{

//内容的定义方法和无继承的情况一样

}

(2)访问权限

同一个包下

不同包下

public

能被继承,分配空间后可以用“.”访问数据

能被继承,分配空间后可以用“.”访问数据

protected

能被继承、供内部使用(分配空间后可以用“.”访问数据)

能被继承、供内部使用(分配空间后不能用“.”访问数据)

友好,默认不修饰

只能在同一个包下使用

private

不能被继承、供内部使用,分配空间后不能用“.”访问数据

不能被继承、供内部使用,分配空间后不能用“.”访问数据

2.内置实用类

写程序的时候,这些类似的资料可以在对象的声明中找到

(1)输入输出数据的类Scanner

Scanner sc=new Scanner(System.in);

double sum=0.0,a=sc.nextDouble();

while(a!=0) {

sum+=a;

//还可以是nextInt()、nextBoolean()等

a=sc.nextDouble();

}

//println()输出结束后会自动换行、print()不自动换行;Java中也有个类似CC++的输出方法printf()

System.out.println("sum: "+sum);

(2)字符串String

和CC++不同的是Java中的长String数据不会自动连接、需要用到+号

①String的初始化

//拷贝构造

String s0;

String s=new String(s0);

//直接赋值

String s=”how are you?”;

//由char类型的数组初始化

char a[]={‘j’,’a’,’v’,’a’};

String s=new String(a);

String s=new String(a,1,2);

//由byte类型的数组初始化

byte[] a=new byte[1024];

String s=new String(a);

②String类的常用方法

length()

获取字符串的长度

equals()

返回布尔值,判断两个字符串是否相同

startsWith()、endsWith()

判断字符串是否以另一个字符串开头、结尾

compareTo()

按字典序相比较

contains()

字符串是否含有另一个字符串

indexOf()

字符串在另一个字符串中的第一个位置下标

substring()

获取子字符串

trim()

去除字符串的前后空格

Integer.parseInt()…

字符串转换为int数据,其他类似…

String.valueof()

将数据转换为字符串

(2)数学计算

①Math类

abs()

求绝对值

max()

返回两个数中的最大值

min()

返回两个数中的最小值

random()

产生(0,1)间的随机数

pow()

求幂

sqrt()

平方根

log()

对数,底数是10

sin()

正弦值

asin()

反正弦值

②产生随机数

(int)(Math.random()*100)+1

得到[0,100]间的随机整数

Random random=new Random();

Random.nextInt(100);

得到[0,100)间的随机整数

Random random=new Random();

Random.nextBoolean();

得到随机的布尔值

(3)获取时间日期

//从1970年0点0分0刻到如今的毫秒数

System.currentTimeMillis();

七、泛型

八、流

九、数据库

十、Applet和xml传值

十一、多线程

十二、网络编程

十三、GUI

十四、附录

1.debug

双击代码行的左侧可以添加、取消断点;

启动debug,f6进入下一行

2.反编译和html格式文档

“javap [选项] 字节码文件”可以得到对应的源文件;“javadoc [选项] 不带包名和后缀的源文件”将生成类的html说明文档,-d选项可以设置说明文档的目录

3.导出jar文件

本质上是得到一个压缩包,避开了程序中资源的路径问题、所以会更容易使用;一般用命令行打开“java –jar 具体的jar文件”,带UI的程序还可以直接用Java(TM)打开;如果将.jar文件放到C:\Program Files\Java\jre1.8.0_131\lib\ext下,重启eclipse后可以引用.jar文件中的包名、使用里面的类(可惜不会有拼写上的提示)

(1)IDE的方式

File->Export…->JAR file;

选择export destination的位置;

选择seal package的内容、Main class的内容,确认即可;

(2)命令行的方式

用命令行先得到.class文件、将文件放到正确的目录下;

在包名的同级目录下创建.mf文件:

Manifest-Version: 1.0

Main-Class: logic.demo0

Class: logic.demo0

Create-By: morning

在命令行执行“jar cfm 任意名称.jar 对应名称.mf 目录名称\*.class”即可

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄