zoukankan      html  css  js  c++  java
  • Java中的小知识。

     1 package jicheng;
     2 
     3 public class Animal {
     4     //定义一个成员变量name。
     5     private String name;
     6     public String getName() {
     7         return name;
     8     }
     9     //定义一个参数(局部变量 )name2
    10     public void setName(String name2) {
    11         name = name2;//将局部变量的值传递给成员变量
    12     }
    13     
    14     public static void main(String[] args) {
    15         Animal a=new Animal();
    16         a.setName("li");
    17         String b=a.getName();
    18         System.out.println(b);
    19     }
    20 }

    1:set  和get方法。

    我们先来看看set和get这两个词的表面意思,set是设置的意思,而get是获取的意思,顾名思义,这两个方法是对数据进行设置和获取用的。而且,在类中使用set和get方法时,都是在set和get后面跟上一些特定的词来形成特定意思的方法名,比如setage()和getage(),表示设置年龄和获取年龄。
    然后我们来了解一下JAVA面向对象编程中的封闭性和安全性。封闭性即对类中的域变量进行封闭操作,即用private来修饰他们,如此一来其他类则不能对该变量访问。这样我们就将这些变量封闭在了类内部,这样就提高了数据的安全性,当我们想要操作这些域变量怎么办呢?我们可以通过两种方法,第一中即通过public方式的构造器(或称构造函数),对象一实例化就对该变量赋值。第二种就是通过上面提到的set和get方法,这里我举一个特定的例子,我定义一个Person类,该类中有name、age这两个私有域变量,然后我定义setname()、getname()、setage()、getage()这四个方法,通过这四个方法来实现对name和age的操作。这样一来,我不用直接对Person类中的域变量操作,而是通过set和get方法间接地操作这些变量,这样就能提高域变量的安全性,同时又保证了域变量的封装型。

    2:局部变量和成员变量的区别

    成员变量=属性。

    局部变量=参数。

    全局变量= static 成员变量。

    1、在类中的位置不同

    成员变量:在类中方法外面

    局部变量:在方法或者代码块中,或者方法的声明上(即在参数列表中)

    2、在内存中的位置不同,可以看看Java程序内存的简单分析

    成员变量:在堆中(方法区中的静态区)

    局部变量:在栈中

    3、生命周期不同

    成员变量:随着对象的创建而存在,随着对象的消失而消失

    局部变量:随着方法的调用或者代码块的执行而存在,随着方法的调用完毕或者代码块的执行完毕而消失

    4、初始值

    成员变量:有默认初始值

    局部变量:没有默认初始值,使用之前需要赋值,否则编译器会报错(The local variable xxx may not have been initialized)

    package demo;
    
    public class VariableDemo {
        String name = "成员变量";
    
        public static void main(String[] args) {
            new VariableDemo().show();
        }
    
        public void show() {
            String name = "局部变量";
            System.out.println(name);
        }
    }

    输出结果:局部变量
    我们看到输出的是show方法中定义的name变量,在使用变量时遵循的原则是就近原则,那么如何访问到成员变量name呢,Java中提供了this(表示调用对象本身)这个关键字用于访问成员变量。

     1 package demo;
     2 
     3 public class VariableDemo {
     4     String name = "成员变量";
     5 
     6     public static void main(String[] args) {
     7         new VariableDemo().show();
     8     }
     9 
    10     public void show() {
    11         String name = "局部变量";
    12         System.out.println(this.name);
    13     }
    14 }

    3:this

    this关键字主要有三个应用:
     (1)this调用本类中的属性,也就是类中的成员变量;
     (2)this调用本类中的其他方法;
     (3)this调用本类中的其他构造方法,调用时要放在构造方法的首行。
    1 Public Class Student { 
    2  String name; //定义一个成员变量name
    3  private void SetName(String name) { //定义一个参数(局部变量)name
    4   this.name=name; //将局部变量的值传递给成员变量
    5  }
    6 }

    从上面的代码中我们可以看到是局部变量赋值给成员变量。但是java编辑器不知道是局部变量赋值给成员变量。还是成员变量赋值给局部变量。这个时候this就起作用了。代表的就是这个类中的成员变量。

    代码this.name=name就是将形式参数的值传递给成员变量。一看到这个this关键字就知道现在引用的变量是成员变量或者成员方法
    4:String转Int 输入一个String类型的参数,然后返回的是一个int类型的
    public static int parseInt(String s) throws NumberFormatException {
        return parseInt(s,10);
        }
    public static int parseInt(String s, int radix)
            throws NumberFormatException
        {
            if (s == null) {
                throw new NumberFormatException("null");
            }
    
        if (radix < Character.MIN_RADIX) {
            throw new NumberFormatException("radix " + radix +
                            " less than Character.MIN_RADIX");
        }
    
        if (radix > Character.MAX_RADIX) {
            throw new NumberFormatException("radix " + radix +
                            " greater than Character.MAX_RADIX");
        }
    
        int result = 0;
        boolean negative = false;
        int i = 0, max = s.length();
        int limit;
        int multmin;
        int digit;
    
        if (max > 0) {
            if (s.charAt(0) == '-') {
            negative = true;
            limit = Integer.MIN_VALUE;
            i++;
            } else {
            limit = -Integer.MAX_VALUE;
            }
            multmin = limit / radix;
            if (i < max) {
            digit = Character.digit(s.charAt(i++),radix);
            if (digit < 0) {
                throw NumberFormatException.forInputString(s);
            } else {
                result = -digit;
            }
            }
            while (i < max) {
            // Accumulating negatively avoids surprises near MAX_VALUE
            digit = Character.digit(s.charAt(i++),radix);
            if (digit < 0) {
                throw NumberFormatException.forInputString(s);
            }
            if (result < multmin) {
                throw NumberFormatException.forInputString(s);
            }
            result *= radix;
            if (result < limit + digit) {
                throw NumberFormatException.forInputString(s);
            }
            result -= digit;
            }
        } else {
            throw NumberFormatException.forInputString(s);
        }
        if (negative) {
            if (i > 1) {
            return result;
            } else {    /* Only got "-" */
            throw NumberFormatException.forInputString(s);
            }
        } else {
            return -result;
        }
        }


  • 相关阅读:
    OpenCascade Ray Tracing Rendering
    Create New Commands in Tcl
    OpenCascade Modeling Algorithms Fillets and Chamfers
    OpenCascade Modeling Algorithms Boolean Operations
    Construction of Primitives in Open Cascade
    Open Cascade Data Exchange STL
    Tcl Tk Introduction
    Open Cascade DataExchange IGES
    Netgen mesh library : nglib
    Hello Netgen
  • 原文地址:https://www.cnblogs.com/bulrush/p/7988304.html
Copyright © 2011-2022 走看看