zoukankan      html  css  js  c++  java
  • java初学2

    1、数组操作类Arrays与System

    public static void arraycopy(Object src, int srcPos, Object dest,int destPos,int length):
    用于数组src从第srcPos项元素开始的length个元素拷贝到目标数组dest从destPos开始的length个元素 

    2、方法的可变参数

    int sum(int a,int ... args)
    {
    
    }  

    3、类似foreach的for循环

    public static void main(String[] args) {
        String[] itcastNames={"bjit","cdit","gzit"};
        for (String name : itcastNames) {
            System.out.print(name + " ,");
        }
    }

     4、属性

    通常将类中的成员变量私有化(private),通过对外提供方法(setXxx,getXxx),可对该变量(xxx)进行访问。
    例如:
      private int age;
    属性则为:
      public int getAge()
      {
          return age;
      }
     public void setAge(int a)
     {
         age=a;
     } 

    但是boolean 类型的变量没有getXX,只有 isXX和setxx

      private boolean isMan;

    属性则为

    public void setIsMan(boolean b)
     {
         iaMan=b;
     } 
    public boolean isIsMan()
    {
         return isMan;
    }

    5、this

    多个构造器中相互调用时,此时的this(参数) 必须写在构造方法中的第一行。
    public class Person
    {
         void Person(string name)
         {
         }
    
         void Person(string name,int age)
         {
            this(name);//此句必须放在第一句,不能让下面age=1放在this(name)前面
            age=1;
         }
    }

    6、package

    当我们用dos命令编译如下java文件时:PackageDemo.java文件的目录 > javac  PackageDemo.java

    package test;
    
    class PackageDemo
    {
        public static void main(String[] args)
        {
              System.out.println("Hello World!");
        }
    }

    是会生成PackageDemo.class文件的,但是当我们运行(PackageDemo.class文件的目录 > java PackageDemo)此字节码文件时,是会报错的(NoClassDefFoundError)!

    其实它是少了一个test文件夹,没有自动帮我们生成对应的包文件夹,只要使用了下面的命令即可,加上 -d .

     javac  -d . PackageDemo.java

    运行时使用命令:java test.PackageDemo(包名.类名)即可!

    如果包名类似这样的话:package a1.b1.c1,那么会自动生成a1、b1和c1三个文件夹,包名强烈建议都为小写  

    package必须写在文件的开头,必须写在import和类声明之前。 
    java允许将一组功能相同的类放在同一个package下。
    7、import
    访问带有package的类
    假如我现在有一个类,如下
    package test;
    
    public class PackageDemo
    {
        
    }

    那么我们就可以使用如下两种方式访问类

    (1)导入类,更好的翻译是“寻找”类       
    import test.PackageDemo;
    
    class MyProgram
    {
        public static void main(String[] args)
        {
              PackageDemo pd = new PackageDemo();
        }
    }
    (2)寻找某个包下被使用到的全部类(此包下没有使用到的类不会加载进来,此包的子孙包下的任何一个类是无法访问到的,因为*是不包含子孙包下的类的)
    import test.*;
    
    class MyProgram
    {
        public static void main(String[] args)
        {
              PackageDemo pd = new PackageDemo();
        }
    }

    * 只能表示类名,不能表示包名

    同一个类中出现多个相同的类名处理
    (1)java.util.Date  和  java.sql.Date
           类的全限定名:该类的包名.子包名....类名
    (2)String类的权限定名:
            java.lang.String
    JVM会自动导入java.lang下的所有被使用到的类:
    所以不需要我们去手工import;但JVM不能导入java.lang子包下的类。
    8、java常用包
    (1)java.lang  : 语言核心类,系统自动导入
            • 只要搞java,天天都会用这个包。含有String等常用类
    (2)java.util  : java 工具类、集合框架类和接口
            • 以后要学习时间,日历,集合等就得用到这个包。
    (3)java.net   : 网络编程接口和类
            • 以后要写和网络相关的应用就要用这个包。
    (4)java.io    : 流的接口和类
            • 以后要写读写文件或者图片等这些就要用这个包。
    (5)java.text  : java格式化相关类
            • 以后我们要做软件国际化就要用这个
    (6)java.sql   : jdbc相关接口和类
            • 以后操作java连接数据库就要使用到这个包
    (7)java.awt   : 抽象窗口工具集相关接口和类(不能跨平台)
            • 搞一个类似于QQ一样的软件,界面就得使用这个包下的类;
    (8)java.swing :图形用户界面相关接口和类(可跨平台)
    (9)Java.applet : java的应用小程序(早就已过时)

    另外、javax包是对java的增强、javax里的swing包是做窗口的,不过它比java.awt增强了,它可以跨平台,而且界面更漂亮了!

    9、访问修饰符

    10、java5新特性

    import static语句导入一个类中的某个静态字段、方法或所有需要使用到的静态字段、方法。
    import static java.lang.Math.PI;
    import static java.lang.Math.*;
    11、子类对象实例化过程
    12、Java继承是使用的是extends 
     public class Chinese extends Person
    {
    
    }

    判断当前对象是不是所指定的类型:instanceof

    Chinese  chinese = new Chineese(); 
    if
    (chinese instanceof Person) //instanceof不能随便使用,若对象A的类型和类型B之间没有继承关系的话,就不能使用instanceof运算符 // 是此类型的对象

    13、方法覆写(重写)

    (1)产生原因:
           • 当父类中某个方法不适合于子类时,子类出现父类一模一样的方法.
    (2)判断必杀技:子类方法前加上@Override能编译通过,表明是方法的覆写。
    (3)调用被覆盖的父类方法:使用super.方法名(实参);
    (4)方法覆写时应遵循的原则(一同两小一大):父类的私有方法不能被重写!另外、静态方法也不能被重写,因为方法的重写和对象有关,而static修饰的方法和对象无关!
            (一同):
                     • 方法签名必须相同;
            (两小):
                     • 子类方法的返回值类型比父类方法的返回值类型更小或相等
                     • 子类方法声明抛出的异常应比父类方法申明抛出的异常更小或相等;
            (一大):子类方法的访问权限(访问修饰符)应比父类方法更大或相等;
    Overload & Override
    判断重载:两同一不同:同类,同方法名,参数列表不同(参数类型,参数个数,参数的顺序)
    14、Super
    (1)表示父类对象的默认引用
    (2)如果子类要调用父类被覆盖的实例方法,可用super作为调用者调用父类被覆盖的实例方法。
    (3)使用super调用父类方法
    (4)使用super调用父类的构造方法
    this不能出现在static修饰的方法中,super也一样不能出现在static修饰的方法中。
    因为 static修饰的方法属于类,也就是说其调用者是类。
    子类调用父类的构造方法时:super必须放在第一句
     
  • 相关阅读:
    多节点通过PPP连接,节点/用户/客户机之间互相访问ping
    nginx的autoindex,目录浏览,配置和美化,美观的xslt_stylesheet
    用EM4305/T5557模拟EM4100的ID卡,原理解释
    CentOS7用hostapd做radius服务器为WiFi提供802.1X企业认证
    用openssl为WEB服务器生成证书(自签名CA证书,服务器证书)
    去freessl.org申请免费ssl服务器证书
    用openssl为EAP-TLS生成证书(CA证书,服务器证书,用户证书)
    自建简单又实用的动态域名管理系统
    SpringBoot自动装配原理
    Mysql中的范式
  • 原文地址:https://www.cnblogs.com/MrZivChu/p/startstudyjava2.html
Copyright © 2011-2022 走看看