package jicheng;

 public class Animal {
//定义一个成员变量name。
private String name;
public String getName() {
return name;
}
//定义一个参数(局部变量 )name2
public void setName(String name2) {
name = name2;//将局部变量的值传递给成员变量
} public static void main(String[] args) {
Animal a=new Animal();
a.setName("li");
String b=a.getName();
System.out.println(b);
}
}

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(表示调用对象本身)这个关键字用于访问成员变量。

 package demo;

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

3:this

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

从上面的代码中我们可以看到是局部变量赋值给成员变量。但是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;
}
}
												

最新文章

  1. Ext学习
  2. 建筑行业如何用BPM替换OA?
  3. PHP请求页面
  4. Android UI:机智的远程动态更新策略
  5. 动态规划:NOI2013 快餐店
  6. Windows下通过脚本快速修改IP地址
  7. ##DAY13——可视化编程之XIB
  8. break的使用for循环嵌套
  9. java正则表达式验证标点符号
  10. Distributing Parts
  11. 解决Cordova安装Cannot find module &#39;bplist-parser&#39;问题
  12. css实现六边形图片(最简单易懂方法实现高逼格图片展示)
  13. 常用的 JS 排序算法整理
  14. Spark dataframe【KV格式】模拟实现Map操作
  15. 小甲鱼零基础python课后题 P24 023递归:这帮小兔崽子
  16. shell脚本学习-练习写一个脚本1
  17. Confluence 6 使用 JMX 界面实时监控
  18. Outlook Error: The Delegates settings were not saved correctly. Cannot activate send-on-behalf-of list.
  19. gb2312提交的url编码转换成utf8的查询
  20. java集合复制和反转

热门文章

  1. session应用:
  2. 黄金含量版本——KTV
  3. react教程 — 组件
  4. How to: Use a Custom User Name and Password Validator(WCF)
  5. Jmeter中动态获取jsessionid来登录
  6. WEB服务端安全---注入攻击
  7. 神他么奇怪NoClassDefFoundError
  8. appium常见问题03_appium脚本报错selenium.common.exceptions.WebDriverException
  9. 初学Selenium遇上的问题
  10. Advanved DataGrid using QTP