前文
来源:互联网 发布:数据库笔试题及答案 编辑:程序博客网 时间:2024/06/03 18:42
String s; //仅仅是创建一个引用,并没有指向对象,作为字段会默认初始化为null,作为局部变量不显示初始化会报错
String s = new String("1234"); //创建一个引用并将其连接到对象(显示初始化)
栈内存:
存放变量(基本数据类型)以及引用(引用数据类型),当方法调用完成后,变量以及引用会被销毁
变量中直接存放值,而引用存放对象的地址值
String s = “123”; //将s引用指向字符串对象
s = “234”; //这里重新将s引用指向新创建的字符串对象
String类型改变字符串时就会将引用指向到新的对象,不会改变原对象
堆内存:
存放对象的位置,当对象没有引用指向它时,会被垃圾回收器处理
基本类型:
boolean(布尔):无明确大小,true/false
char(字符):根据编码/16bit,’a’用单引号包裹一个字面量来表示一个字符
byte(字节):1字节/8bit
short(短整型):2字节/16bit
int(整型):4字节/32bit
long(长整型):8字节/64bit
float:(单精度浮点型)4字节/32bit
double(双精度浮点型):8字节/64bit
基本类型运算会丢失精度,使用精确类型的类BigInteger(整数)或者BigDecimal(浮点数)需要精确的数
作用域:
public class Demo{ private String name = "1"; private String name = "2"; //已经定义过,会报错 { String name = "3"; //已经定义过,会报错 } public void test(){ String name = "123"; //在构造器/任意方法中的不会报错,这里的name实际上是局部变量 }}
在同一个类的代码块中/构造器中/方法中可以访问到定义的字段
public class Demo{ private String name = "1"; public void test(String name){ name = "123"; //这里的name实际上是显示参数的name } public void test(){ name = "123"; //这里的name实际上字段的name }}
当构造器/方法中需要传入参数的时候,即使参数变量名与字段变量名一致,也不是同一个变量
默认初始化:
如果字段没有显示初始化,JAVA会默认初始化
局部变量没有显示初始化会报错
boolean:false
char:’\u0000’(空字符)
byte:(byte)0
short:(short)0
int:0
long:0L
float:0.0F
double:0.0D
引用类型:null
方法:
方法签名是方法名以及参数列表
调用时括号内的为显示参数,方法前的为隐式参数也就是对象本身
JAVA参数传递为按值传递:
public class Demo { private void test1(A a) { //a = new A(); //这里将传入的对象替换了 a.age = 20; //这里将传入的参数中的字段的值修改了 System.out.println("test1方法中的age=" + a.age); } public static void main(String[] args) { Demo t = new Demo(); A a = new A(); //创建对象 a.age = 10; t.test1(a); //传入引用的地址值(对象) System.out.println("main方法中的age=" + a.age); //打印20,20 下划线位置没有注释的话为20,10 }}class A { public int age = 0;}
这里可以看出按值传递的是A对象,并用test1方法中的显示参数a引用传入的对象,这个时候两个引用指向该对象,分别是main中的a和test1中的a,所以修改的是同一个对象中的字段值
而下划线位置则是抛弃传入的对象,将test1的a指向在方法中创建的新对象,这时候main中的a指向一个对象,test1指向另一个对象,所以test1方法中修改字段值不会影响main方法的字段值
JAVA中基本类型和String类型都是按值传递,其他对象是按引用的地址值传递
- 前文
- 博客前文
- 前文提要
- 网页数据抓取-接前文模拟登录
- HDCP 6410 移植 (续前文)
- windows删除90天前文件
- 批处理删除一个月前文件
- windows删除几天前文件的批处理命令
- forfiles命令批量删除N天前文件
- Mac下顯示當前文件目錄(配置open cv on ios)
- Linux 下 自动删除N天前文件
- forfiles命令批量删除N天前文件
- 自动删除7天前文件及文件夹.bat
- 删除指定目录下几天前文件,bat
- 批量生成圖片預製躰,并且保留當前文件目錄
- Linux下MYSQL定时备份、定时清理几天前文件
- 后来改进的debug.as,因为有个小bug会严重影响速度,详细见前文
- 怎样监控和评估网络营销的效果前文汇总(转自MARS同学BLOG)
- Mac 使用ZSH终端设置问题,解决command not found
- HTML基础-第一部分
- 指针+选太子
- JS小算法
- Hibernate回顾
- 前文
- partition-list
- Spring与mybatis整合
- 匈牙利命名规则
- Js和Jquery中html(),html(值),val()和val(值)的区别
- 75. Sort Colors
- Parcelable, Serializable,Cloneable,copyProperties
- codeforces 27E Number With The Given Amount Of Divisors
- Misc-Xp0int(数据包分析)