博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中的小知识。
阅读量:5092 次
发布时间:2019-06-13

本文共 4441 字,大约阅读时间需要 14 分钟。

1 package jicheng; 2  3 public class Animal { 4     //定义一个成员变量name。 5     private String name; 6     public String getName() { 7         return name; 8     } 9     //定义一个参数(局部变量 )name210     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、在内存中的位置不同,可以看看

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

局部变量:在栈中

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; //定义一个成员变量name3  private void SetName(String name) { //定义一个参数(局部变量)name4   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;    }    }

 

 

转载于:https://www.cnblogs.com/bulrush/p/7988304.html

你可能感兴趣的文章
Linux下MySQL数据库的备份与还原
查看>>
博客文章汇总
查看>>
python学习 数据类型之序列
查看>>
设计模式简介
查看>>
QAction QActionGroup QMenu 使用方法
查看>>
点火开关分为4个档位,分别是off,acc,IG-on,和ST
查看>>
RDLC报表上下标实现
查看>>
我的代码库-Java8实现FTP与SFTP文件上传下载
查看>>
js 原型链的介绍
查看>>
MVC Ajax
查看>>
PHP精粹:编写高效PHP代码(资深PHP技术专家多……
查看>>
MfgTool (i.MX53)使用
查看>>
125. Valid Palindrome java solutions
查看>>
[bzoj3217]ALOEXT
查看>>
Python学习笔记五
查看>>
Linux性能优化之内存优化(二)
查看>>
entity framework 数据库默认时间的问题的一种解决方案
查看>>
CAN总线
查看>>
WCF基本应用
查看>>
{暴力}
查看>>