Java的第一个程序
public class HelloWorld {
public static void main(String[] args) {
System.out.print("Hello,world!");
}
}
变量
- 变量的基础类型
整数类型:
byte :-128-127
short
int
long
浮点型:
float
double
字符型:
char
boolean类型:
boolean值只有true和false两个
位 0011 4位
字节(B) 1B = 8bit(位)
所有的字符本质还是数字
类型转换
低-------------------------------------->高
byte,short,char->int->long->float->double
-
强制转换
(类型)变量名 高-->低
-
自动转换
低-->高
注意:
1、不能对布尔值进行转换
2、不能把对象类型转换为不相干的类型
3、注意内存溢出
变量作用域
类变量:加static
实例变量:从属于对象 如果不自行初始化,这个类型的默认值(0、 0.0、、null、布尔值为false)
局部变量:方法内 必须声明和初始化值
public class VariableScope {
//属性
static int a = 0; // 类变量 有static
String name = "凡星"; // 实例变量 无static
//main方法
public static void main(String[] args) {
int i = 0; // 局部变量---->没赋值不能用
}
变量的命名规则
首字母小写和驼峰原则
常量
-
定义示例
final double PI = 3.14;
-
常量命名规则
常量名一般使用大写字符 单词间_。
Java的包机制
建一个包就相当于建一个文件夹
- 建包
package cf.daunzifan.java.packageTest; - 导包
import cf.duanzifan.java.* .*通配符
方法
-
静态方法
static 类存在则静态方法就存在(类名.方法名) -
非静态方法
类实例化之后才存在(new 类名.方法名)
方法的重载
就是在一个类中,有相同的函数名称,但形参不同的函数
1)方法名必须相同
2)参数列表必须不同(个数不同、或类型不同、参数排列顺序不同)
递归
递归头:什么时候不调用自身方法《f(1)》。如果没有头,将陷入死循环
递归体:什么时候需要调用自身方法
递归 基数小才能跑,太占内存,尽量不用
递归代码示例:
//阶乘
public class Recursive {
public static void main(String[] args) {
System.out.println(f(3));
}
public static int f(int n){
if(n == 1){
return 1;
}else{
return n*f(n-1);
}
}
}
数组
-
声明数组变量的两种方法
int i[]; int[] i;//一般常用
-
创建数组:用new操作符
int[] i = new int[10]; new是用来开创内存的
-
获取数组长度
i.length
-
数组的初始化
1、静态初始化 int[] i = {1,2,3,4,5,6,7,8,9}; 2、动态初始化 int[] i = new int[10];//开创空间,里面所有值都是默认的 i[0] = 10;//需要手动赋值
Array
1、Java语言中的数组是一种引用数据类型。不属于基本数据类型。数组的父类是Object。
2、数组实际上是一个容器,可以同时容纳多个元素。(数组是一个数据的集合。)
3、数组当中可以存储“基本数据类型”的数据,也可以存储“引用数据类型”的数据。
4、数组因为是引用类型,所以数组对象在堆内存当中。(数组是存储在堆当中的)
5、数组当中如果存储的是“java对象”的话,实际上存储的是对象的“引用(内存地址)”
6、数组一旦创建,在java中规定,长度不可变。
7、数组的分类:一维数组、二维数组,三维数组,多维数组。。。
8、所有数组对象都有length属性
9、数组中元素的内存地址是连续的(特色)是一种数据结构
10、所有的数组都是拿第一个元素的内存地址作为整个数组对象的内存地址。