zoukankan      html  css  js  c++  java
  • Java语言

    目录

    一、java是什么... 2

    二、环境配置... 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

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

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

    2.条件语句... 5

    3.循环语句... 6

    六、类... 6

    1.自定义类... 6

    (1)一般格式... 7

    (2)访问权限... 7

    (3)继承中方法和变量的覆盖... 8

    (4)this、super、final、abstract、instanceof 8

    (5)接口... 8

    (6)内部类、外嵌类、匿名类... 9

    (7)异常处理... 9

    2.内置实用类... 10

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

    (2)字符串String. 11

    (2)数学计算... 12

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

    七、泛型... 13

    八、流... 13

    九、数据库... 13

    十、Applet和xml传值... 13

    十一、多线程... 13

    十二、网络编程... 13

    十三、GUI 13

    十四、附录... 13

    1.debug. 13

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

    3.导出jar文件... 14

    (1)IDE的方式... 14

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

    正文

    一、java是什么

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

    二、环境配置

    1.windows操作系统

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

    JAVA_HOME

    C:Program FilesJavajdk1.8.0_131

    classpath

    .;%JAVA_HOME%lib;%JAVA_HOME%lib ools.jar

    Path

    %JAVA_HOME%in;%JAVA_HOME%jrein

    三、命令行编译运行

    虽然现在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编码也可以获取到一些奇葩的字符;微软word的快捷功能alt+x

    通过字符获取unicode编码

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

    通过unicode编码获取字符

    “u四位数字的编码”

    2.数组

    可以把类型相同的数据可以当作一个数组;数组、对象、接口都属于引用型变量,地址是System.out.println(""+数组名);、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;

    //或者

    int[] a=new int[]{0,1,2,3,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++几乎相同,下表描述的是运算符的优先级:

    优先级

    运算符

    结合性

    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);

    }

    六、类

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

    1.自定义类

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

    (1)一般格式

    ①无继承

    访问权限 class 类名{

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

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

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

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

    类名(参数列表){

    用于初始化的语句块;

    }

    //功能函数,也可以是重载函数(函数名相同参数列表不同)

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

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

    }

    }

    ②继承

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

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

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

    }

    (2)访问权限
     

    同一个包下

    不同包下

    public

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

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

    protected

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

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

    友好,默认不修饰

    只能在同一个包下使用

    private

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

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

    (3)继承中方法和变量的覆盖

    子类可以重载父类中的方法(和重载有区别的是返回值必须是父类对应方法的返回值的子类),当方法和父类中对应方法的形式完全一样时,子类将覆盖父类中对应的方法,类似的子类中的变量也是覆盖父类中同名的变量;访问限定字可以提高、不允许降低(public、protected、友好、private);子类不继承父类的构造方法

    (4)this、super、final、abstract、instanceof

    ①this、super、final

    this是当前类,super指父类

    final修饰的类不能被继承,可能处于安全上的考虑;final修饰的方法继承的时候可以被重载不能被覆盖;final修饰的变量定义后不能再修改

    ②abstract

    面向抽象类编程不依赖于具体的类,就不会大面积的改动程序、可维护性较好;核心部分允许扩展、不允许修改,有利于一个系统的维护

    抽象类、抽象方法不能和final、static搭配使用,一般类也不能和static搭配使用;有抽象方法的类有且仅有抽象类,抽象类中的方法不一定都是抽象方法;继承抽象类的子类必须重写抽象类的抽象方法;可以用抽象类声明对象,但不能使用new为抽象类分配空间,不过声明对象后给它的非抽象子类分配空间、再使用这个对象是完全合理的(向上转型)

    ③instanceof

    //父类创建的对象不属于子类的实例,子类创建的对象属于父类的实例,返回值true或false

    对象 instanceof 类

    (5)接口

    类必须实现某些方法或功能,不要求类有相同的父类,接口间也是可以继承的;接口可以做参数使用,但是必须传入具体的实现类

    ①定义接口

    访问权限 interface 接口的名称{

    //常量的定义,一般省略public final static

    类型 变量名=初始值;

    //共有抽象方法的声明,一般省略public abstract

    类型 函数的名称(参数列表);

    }

    ②接口的使用

    a.继承接口的类

    访问权限 class 类的名称 implements 接口的名称{

    接口的具体实现;

    其他变量和方法;

    }

    b.继承接口的抽象类

    //抽象类完成后,还需要通过具体的类继承才能使用

    访问权限 abstract class 抽象类的名称 implements 接口的名称{

    部分接口的具体实现;

    其他变量、抽象方法、方法;

    }

    c.接口回调

    和向上转换一样,可以调用接口中已有的、子类中对应的具体方法

    (6)内部类、外嵌类、匿名类

    内部类、外嵌类:在一个类的内部再定义其他类,外面的是外嵌类、里面的叫内部类;内部类可以调用外嵌类的变量和方法,但不可以声明或定义类变量、类方法(可以定义常量);定义的内部类不能在外部使用(有一种情况除外:内部类可以在访问权限的后面加上static即可,这样这个内部类一开始就有自己的空间、可以供外部使用,但是不能使用实例方法、实例对象),但是内部类的对象是可以供外部使用的;内部类得到的字节码名字是“外嵌类$内部类.class”

    匿名类:在参数中直接使用“new 类的名称()//可以继承后重写父类,里面不能有新的类对象和类方法”,实现接口的方法后对接口适用

    (7)异常处理

    比较常用的是“throw new IllegalArgumentException(“”);”

    ①异常类和try…catch

    异常类

    获取异常的字符串内容.getMessage(),继承自Exception类并重写构造函数、重写getMessage()返回需要的字符串,在用到异常类的方法后面声明“throws 异常类的名称”、在需要的地方抛出异常即可

    try{

    可能会抛出异常的代码;

    }

    //对抛出的异常进行捕获

    catch(异常类的子类0 e){

    异常处理的代码;

    }

    //对抛出的异常进行捕获

    catch(异常类的子类n e){

    异常处理的代码;

    }

    //finally语句块可以没有

    finally{

    try…catch中如果没有System.exit(0);则执行这个部分;

    }

    ②断言

    “assert 条件;”或者“assert 条件:”对异常的说明”;”

    a.用命令行的方式得到.class文件后,用“java –ea XX的包名.XX”启用断言

    b.Run->Run Configuration->选择Java Application中的主类->(x)=Arguments的VM arguments中填写“-ea”、Program arguments中填写说明,再次运行即可

    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 FilesJavajre1.8.0_131libext下,重启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”即可

  • 相关阅读:
    国外邮箱怎么选择?哪个企业邮箱收发国际邮件比较稳定?
    企业邮箱哪家好,什么企业邮箱安全稳定好用?
    电子邮箱客户端如何设置?POP3与IMAP协议有什么区别?
    自建企业邮箱对比外包企业邮箱,集团企业邮箱该如何选择?
    集团大企业什么邮箱,大公司申请邮箱要注意什么呢
    双十一怎么买?TOM VIP邮箱推出稀缺靓号,超值福利等你领!
    双十一企业邮箱攻略送你啦!TOM企业邮箱双十一限时4折!仅余200名额!
    企业邮箱怎么买更优惠?双11申请企业邮箱哪家价更低?
    发错邮件怎么办,误删重要邮件怎么办?TOM vip邮箱后悔药一剂,请查收~
    企业邮箱登录注册,外贸企业邮箱购买哪个好?
  • 原文地址:https://www.cnblogs.com/guomc/p/11179405.html
Copyright © 2011-2022 走看看