1.java的数据类型分两大类:
基本类型和
引用类型.
基本类型有:
整数类型,浮点类型,字符类型char (2Byte),布尔类型boolean (1bit).
整数类型又分:
字节型byte (1Byte),短整型short (2Byte),整型int (4Byte),长整型long (8Byte).
浮点类型分为:
单精度型float (4Byte),双精度型double (8Byte).
引用类型有:
字符串String,数组[],类class,接口interface.
2.
Java函数参数传递的理解
http://www.cjsdn.net/post/print?bid=1&id=91403
Java函数参数是值传递的。
. 如果参数是基本类型,函数不能改变参数的值。
. 如果参数是对象,函数可以改变参数的属性。
. 如果参数是对象,函数不能使参数指向新的对象。
3.java函数的参数传递都是,总是传值的.对于基本类型就是传值毫无疑问;对于引用类型,也可以说是传值,一个对象的引用,地址相仿的东西.
4.一个例子:
package com.method.test;
class OutClass
{
String name;
int number;
OutClass(String name,int number)
{
this.name=name;
this.number=number;
}
}
public class TestMethod {
static public void changeInt(int i)
{
i = 9;
}
static public void changeFloat(float f)
{
f = 99.0f;
}
static public void changeString(String s)
{
s = "after changed";
}
static public void newString(String s)
{
s = new String("new String");
}
static public void changeStringB(StringBuffer sb)
{
sb.append("add postfix");
}
static public void newStringB(StringBuffer sb)
{
sb = new StringBuffer("new StringBuffer");
}
static public void changeClass1(OutClass oc)
{
oc.name = "hk";
oc.number = 10000;
}
static public void changeClass2(OutClass oc1,OutClass oc2)
{
OutClass temp ;
temp = oc1;
oc1 = oc2;
oc2 = temp;
}
static public void changeClass3(OutClass oc)
{
OutClass temp = new OutClass("BeiJing",10);
oc = temp;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int originInt = 0;
float originFloat = 0.0f;
String cString = "originCString 0";
String nString = "originNString 0";
StringBuffer csb = new StringBuffer("originCsb 0");
StringBuffer nsb = new StringBuffer("originNsb 0");
OutClass c1 = new OutClass("GZ",20);
OutClass c2_1 = new OutClass("zq",758);
OutClass c2_2 = new OutClass("jm",750);
OutClass c3 = new OutClass("yf",766);
System.out.println("originInt:"+originInt);
System.out.println("originFloat:"+originFloat);
System.out.println("cString:"+cString);
System.out.println("nString:"+nString);
System.out.println("csb:"+csb);
System.out.println("nsb:"+nsb);
System.out.println("c1.name:"+c1.name+";c1.number:"+c1.number);
System.out.println("c2_1.name:"+c2_1.name+";c2_1.number"+c2_1.number);
System.out.println("c2_2.name:"+c2_2.name+";c2_2.number"+c2_2.number);
System.out.println("c3.name:"+c3.name+";c3.number"+c3.number);
System.out.println();
System.out.println();
changeInt(originInt);
changeFloat(originFloat);
changeString(cString);
newString(nString);
changeStringB(csb);
newStringB(nsb);
changeClass1(c1);
changeClass2(c2_1,c2_2);
changeClass3(c3);
System.out.println("originInt:"+originInt);
System.out.println("originFloat:"+originFloat);
System.out.println("cString:"+cString);
System.out.println("nString:"+nString);
System.out.println("csb:"+csb);
System.out.println("nsb:"+nsb);
System.out.println("c1.name:"+c1.name+";c1.number:"+c1.number);
System.out.println("c2_1.name:"+c2_1.name+";c2_1.number"+c2_1.number);
System.out.println("c2_2.name:"+c2_2.name+";c2_2.number"+c2_2.number);
System.out.println("c3.name:"+c3.name+";c3.number"+c3.number);
}
}
结果:
originInt:0
originFloat:0.0
cString:originCString 0
nString:originNString 0
csb:originCsb 0
nsb:originNsb 0
c1.name:GZ;c1.number:20
c2_1.name:zq;c2_1.number758
c2_2.name:jm;c2_2.number750
c3.name:yf;c3.number766
originInt:0
originFloat:0.0
cString:originCString 0
nString:originNString 0
csb:originCsb 0add postfix
nsb:originNsb 0
c1.name:hk;c1.number:10000
c2_1.name:zq;c2_1.number758
c2_2.name:jm;c2_2.number750
c3.name:yf;c3.number766
5.注意以上的String,StringBuffer.特别是String 是对+ ,= ,== ,等符号进行了重载的.
6.基本类型,和类对象的区别.
基本类型的所有相同值变量的值都是程序常量表中的一个引用,如int i = 1;int j =1;
其中的i,j都等于1所以表中同一常量的引用.而String s1 = newString("hello");String s2 = new String("hello");虽然它们的值都相同,但是它们是类对象是没有常量表的,所以不是同一引用.但String类是特别的,程序有个字符串常量表,当String s1 = "hello";或String s2 = new String("hello").intern()时是加入字符串常量表的.
public class TestString {
public static void main(String[] args) {
int i,j,k;
i =5000;
j=5000;
k=j;
System.out.println(i==j);
System.out.println(k==j);
System.out.println(i==k);
String s1 = new String("hello");
String s2 = new String("hello");
String s3 = s1;
System.out.println();
System.out.println(s1==s2);
System.out.println(s1==s3);
System.out.println(s2==s3);
String ss1 = "hello";
String ss2 = new String("hello");
String ss3 = new String("hello").intern();
System.out.println();
System.out.println(ss1==ss2);
System.out.println(ss1==ss3);
System.out.println(ss2==ss3);
}
}
true
true
true
false
true
false
false
true
false
分享到:
相关推荐
### Java的引用与函数参数传递详解 #### 一、Java中的引用基础 在Java中,对象的引用扮演着类似于其他编程语言(如C/C++)中指针的角色,但是Java的引用比传统的指针更加安全且易于管理。这是因为Java的设计者们...
通过对函数参数传递方式的探讨,我们可以总结出函数参数传递规律,即函数参数传递方式取决于函数的具体需求和实现方式,并且参数传递方式的选择取决于实际参数的类型和函数的实现方式。例如,在C语言中,数组作为...
在C语言中,函数参数的传递主要有三种方式:值传递、地址传递和引用传递。这三种方式各自有不同的特性和应用场景,理解它们的工作原理对于编写高效和正确的程序至关重要。 1. 值传递(Value Passing) 值传递是最...
### C语言函数参数传递详解 #### 一、引言 在C语言中,函数是非常重要的概念,它允许我们将代码组织成可重复使用的模块。而函数参数则是传递数据给函数的关键方式之一。根据传递数据的不同方式,可以将参数传递...
Java 8新增了一些预定义的函数式接口,如Function(接受一个参数并产生一个结果)、Predicate(接受一个参数并返回一个布尔值)和Consumer(接受一个参数但不返回值)。 3. **Stream API**: Stream API是Java 8中...
C/C++中多维数组指针作为函数参数传递程序 在 C++ 中,多维数组指针作为函数参数传递是非常常见的编程技术。本文将详细介绍如何在 C/C++ 中将多维数组指针作为函数参数传递,並对相关知识点进行详细解释。 多维...
函数调用参数传递类型(Java)的用法介绍 本文档主要介绍 Java 中函数调用参数传递类型的用法,通过对 Applet 概述、Applet 应用程序接口、绘图、Swing 基础、Swing 的特点和概念、Swing 组件、其它 Swing 特性等...
3. **参数**:方法可以接受零个或多个参数,参数允许传递数据到方法内部处理。 4. **返回值**:方法可能有返回值,也可能没有。无返回值的方法使用`void`关键字定义。 5. **重载(Overloading)**:Java支持方法...
在这个例子中,我们使用箭头函数确保`sayHello`方法的`this`指向`obj`对象,然后传递参数`'Jane'`。两秒后,控制台将输出`Hello, John, Jane`。 值得注意的是,`setTimeout`返回一个唯一的ID,可以通过`...
C语言中二维数组作为函数参数来传递的三种方法 在C语言中,二维数组作为函数参数来传递是非常常见的操作。但是,如何正确地传递二维数组作为函数参数却是许多初学者和开发者经常混淆的地方。今天,我们将详细介绍...
在Java中,Lambda表达式常被用作高阶函数的参数,如`Collection.sort()`方法接受一个Comparator(比较器)作为参数,这是一个典型的高阶函数应用。 5. **函数式编程的核心原则**:函数式编程强调纯函数(无副作用)...
通过指针传递参数,函数可以修改实参的值。在文档示例中,指针传递的实现如下: ```cpp int main(){ void swap(int *p1, int *p2){ int temp = *p1; *p1 = *p2; *p2 = temp; } int i = 3, j = 4; cout , j=" ...
"深入分析C语言中函数参数传递" C语言是最基础的编程语言之一,对于初学者来说,理解C语言的函数参数传递机制是非常重要的。本文将深入分析C语言中函数参数传递的机制,探讨函数调用时数据的传递关系,并通过实例来...
在C语言中,函数参数的传递是程序设计中的核心概念之一。该概念是理解函数如何运作的关键,尤其是参数是如何在函数调用过程中被传递的。在不同的C语言教材中,关于函数参数传递的观点不尽相同。有的认为是“值传递”...
在 C# 中,将结构体 NET_INFO_STRUCT 的实例传递给这个函数,并使用 ref关键字来传递参数。 5. 传递结构体数组(C++ 来填充) 在 C++ 中,函数原型为 int ReadUimAllBook(UIM_BOOK_STRUCT lpUimBookItem[],int ...
本文主要探讨了C语言中函数参数传递的难点,包括形式参数(形参)与实际参数(实参)的区别、参数传递的形式以及相关的编程技巧。 首先,形式参数是在函数定义时使用的占位符,它们在函数未被调用时并不占用内存。...
在MATLAB编程环境中,函数是实现特定计算任务的基本单元,它们通过参数传递数据,并可以通过返回值将结果传递回调用者。本压缩包"函数参数传递测试.zip"包含的资源着重探讨了MATLAB中函数调用及参数传递的机制,这...
C语言的函数参数传递是程序设计中的一个重要概念,它直接关系到程序中数据的流动和处理方式。在C语言中,函数调用时的参数传递方式主要分为两种:值传递(Call by Value)和地址传递(Call by Address),也称作传值...
例如,如果要从Java传递一个`DiskInfo`对象到C++,本地方法可能如下: ```cpp JNIEXPORT jobject JNICALL Java_com_sundy_jnidemo_ChangeMethodFromJni_getStruct(JNIEnv *env, jobject obj) { // 实现获取并填充...
### C语言函数参数传递的关键概念解析 在C语言编程中,函数是程序设计的基本构建块之一,用于组织代码,使其更模块化、可重用。函数参数传递是函数调用过程中一个核心的概念,它决定了函数如何接收外部数据,以及...