目录
Java基础数据类型和方法
首先Java语言和c++一样是一种面向对象的语言,并且Java中一切皆对象。
1.基础数据类型
java,c,c++是强类型语言(即定义一个变量一定要规定它的类型)
java中的数据类型大体分为八大基本数据类型(都有默认值),如下:
数值型:
1.整数 byte<short<int<long
整型 int(当在类中或者主方法外定义int变量时,默认值为0,且占用4个字节,和操作系统无关,规定8个二进制位bit为一个字节byte)
声明变量 int a
赋值变量 int a = 10
java中没有无符号整数的概念,最高位表示正负,0表示正数,1表示复数。
当发生数据溢出时,需要更换更大的数据类型。
长整型 long
语法:long = 10L;
注意:使用long关键字定义长整型,数字后用l或者L。
字节型 byte
语法:byte 变量名 = 初始值;
代码示例
:
byte value = 0;
System.out.println(value);
注意事项
:
1.
字节类型表示的也是整数
.
只占一个字节
,
表示范围较小
(
-
128
-
> +127
)
2.
字节类型和字符类型互不相干。
短整型 short
语法:short 变量名 = 初始值;
代码示例
:
short value = 0;
System.out.println(value);
注意事项
:
1. short
占用
2
个字节
,
表示的数据范围是
-
32768
-
> +32767
2.
这个表示范围比较小
,
一般不推荐使用。
2.浮点数
双精度浮点型 double
语法:double
变量名
=
初始值
;
double
num
=
1.0
;
System
.
out
.
println
(
num
);
在
Java
中
, int
除以
int
的值仍然是
int(
会直接舍弃小数部分
). 如果想得到 0.5,
需要使用
double 类型计算。
Java
中的
double
虽然也是
8
个字节
,
但是浮点数的内存布局和整数差别很大
,
不能单纯的用
2 ^ n
的形式表示数据范
围
.
Java
的
double
类型的内存布局遵守
IEEE 754
标准
(
和
C
语言一样
),
尝试使用有限的内存空间表示可能无限的小数
,
势
必会存在一定的精度误差。
单精度浮点型 float
语法:float
变量名
=
初始值
;
float
num
=
1.0f
;
//
写作
1.0F
也可以
System
.
out
.
println
(
num
);
flfloat
类型在
Java
中占四个字节
,
同样遵守
IEEE 754
标准
.
由于表示的数据精度范围较小
,
一般在工程上用到浮点数都 优先考虑 double,
不太推荐使用float。
字符型 char:
语法:char 变量名 = 初始值;
char
ch
=
'A'
;
注意事项
:
1. Java
中使用
单引号
+
单个字母
的形式表示字符字面值
.
2.
计算机中的字符本质上是一个整数
.
在
C
语言中使用
ASCII
表示字符
,
而
Java
中使用
Unicode
表示字符
.
因此一
个字符占用两个字节
,
表示的字符种类更多
,
包括中文
.
布尔型boolean:
语法:boolean
变量名
=
初始值
;
代码示例
:
boolean value = true;
System.out.println(value);
注意事项
:
1. boolean
类型的变量只有两种取值
, true
表示真
, false
表示假。
2. Java
的
boolean
类型和
int
不能相互转换
,
不存在
1
表示
true, 0
表示
false
这样的用法。
3. boolean
类型有些
JVM
的实现是占
1
个字节
,
有些是占
1
个比特位
,
这个没有明确规定。
2.方法
方法可以类比c中的函数,主要作用是可以使代码段重复使用。
2.1方法的定义:
public static
方法返回值 方法名称(
[
参数类型 形参
...]){
方法体代码
;
[
return
返回值
];
}
方法调用:
返回值变量
=
方法名称
(
实参
...);
例子
class
Test
{
public static
void
main
(
String
[]
args
) {
int
a
=
10
;
int
b
=
20
;
//
方法的调用
int
ret
=
add
(
a
,
b
);
System
.
out
.
println
(
"ret = "
+
ret
);
}
//
方法的定义
public static
int
add
(
int
x
,
int
y
) {
return
x
+
y
;
}
}
//
执行结果
ret
=
30
注意事项
1. public
和
static
两个关键字在此处具有特定含义
,
我们暂时不讨论
,
后面会详细介绍
.
2.
方法定义时
,
参数可以没有
.
每个参数要指定类型
3.
方法定义时
,
返回值也可以没有
,
如果没有返回值
,
则返回值类型应写成
void
4.
方法定义时的参数称为
"
形参
",
方法调用时的参数称为
"
实参
".
5.
方法的定义必须在类之中
,
代码书写在调用位置的上方或者下方均可
.
6. Java
中没有
"
函数声明
"
这样的概念
2.2方法的调用
基本规则
定义方法的时候
,
不会执行方法的代码
.
只有调用的时候才会执行
.
当方法被调用的时候
,
会将实参赋值给形参
.
参数传递完毕后
,
就会执行到方法体代码
.
当方法执行完毕之后
(
遇到
return
语句
),
就执行完毕
,
回到方法调用位置继续往下执行
.
一个方法可以被多次调用
.
代码示例
1
计算两个整数相加
代码示例
:
计算
1! + 2! + 3! + 4! + 5!
class
Test
{
public static
void
main
(
String
[]
args
) {
int
a
=
10
;
int
b
=
20
;
System
.
out
.
println
(
"
第一次调用方法之前
"
);
int
ret
=
add
(
a
,
b
);
System
.
out
.
println
(
"
第一次调用方法之后
"
);
System
.
out
.
println
(
"ret = "
+
ret
);
System
.
out
.
println
(
"
第二次调用方法之前
"
);
ret
=
add
(
30
,
50
);
System
.
out
.
println
(
"
第二次调用方法之后
"
);
System
.
out
.
println
(
"ret = "
+
ret
);
}
public static
int
add
(
int
x
,
int
y
) {
System
.
out
.
println
(
"
调用方法中
x = "
+
x
+
" y = "
+
y
);
return
x
+
y
;
}
}
2.3方法返回值
一个方法可以有返回值也可以没有,根据当前这个方法来判断。没有返回值用void来声明方法,当没有返回值的方法中使用return;表示当前方法结束调用,后面的代码不再执行。
例子:
class
Test
{
public static
void
main
(
String
[]
args
) {
int
a
=
10
;
int
b
=
20
;
print
(
a
,
b
);
}
public static
void
print
(
int
x
,
int
y
) {
System
.
out
.
println
(
"x = "
+
x
+
" y = "
+
y
);
}
}
2.4方法重载(overload)
方法重载发生在同一个类中的不同方法。(别看返回值)
定义:方法重载表示一组方法的方法名称完全相同,参数的个数或者类型不同,与方法返回值无关。这样一组方法称为重载方法。
class
Test
{
public static
void
main
(
String
[]
args
) {
int
a
=
10
;
int
b
=
20
;
int
ret
=
add
(
a
,
b
);
System
.
out
.
println
(
"ret = "
+
ret
);
double
a2
=
10.5
;
double
b2
=
20.5
;
double ret2 = add(a2, b2);
System
.
out
.
println
(
"ret2 = "
+
ret2
);
}
public static
int
add
(
int
x
,
int
y
) {
return
x
+
y
;
}
public static
double
add
(
double
x
,
double
y
) {
return
x
+
y
;
}
}
3.5方法的参数传递
Java中的参数传递是值传递。
public class tic void Method{
public static void main(String[] args){
//要想交换,需要用到引用
int[] arr = new int[]{10,20};
//swap(x,y)
//还是值传递
swap(arr);
System.out.println(arr[0]+" "+arr[1]);
}
public static void swap(int x, int y){
int tmp = x;
x = y;
y = tmp;
System.out.println("x = "+x",y = "+y);
//重载方法
public static void swap(int[] arr){
int tmp = arr[0];
arr[0] = arr[1];
arr[1] = tmp;
}
}