JAVA基础
Posted zl5233
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA基础相关的知识,希望对你有一定的参考价值。
在java语言中,一个java文件中只能定义一个被public修饰的类,且被public修饰的类的类名,必须和java文件的文件名相同
变量
理解(通过名字访问到)变量就是“一片”内存空间。变量的值,就是指存储在这块属于这个变量的内存中的数值。
变量的定义格式:数据类型 变量名 = 变量值
数据类型:一种数据类型,其实表示的就是一个数据集和基于该数据集的一组合法操作
基本数据类型:数值型:整数类型(byte、short、int、long)浮点类型(float、double)
字符型(char):
布尔类型(boolean):
引用数据类型:类(class)、接口(interface)、数组([])
对于变量而言,编译器不可能知道变量当前存储的值究竟是多少,禁止把大类型的值赋值给小类型
对于jvm来说,它要求参与运算的数之间,他们必须是同一种类型,比如说: int + byte,jvm首先会将byte变量读取出来,变成一个int类型的值,然后是两个int类型的值做运算。类型之间默认的转化规则 :小类型 -》大类型
数据类型的转化(jvm默认类型转化规则):
1. boolean类型的值不能直接转化为其它数据类型的值
2. byte,short,char—>int—>long—>float—>double
3. byte,short,char相互之间不转换,他们参与运算首先转换为int类型
?
强制转化
目标类型 变量名=(目标类型)(被转换的数据);
使用变量的注意事项:
作用域
变量有效的时间范围,这个范围通常用{}来界定
?
初始化值
变量在使用之前,由编译器强制必须赋初值
建议一行定义一个变量
从代码的可读性角度来考虑
二维数组
打印杨辉三角
public static int[][] triangleYang(int n) {
int[][] result;
if (n == 1) {
result = new int[][]{{1}};
return result;
}
if (n == 2) {
result = new int[][]{{1}, {1, 1}};
return result;
}
//当 n>=3 的的时候
//第二种初始化方式,初始化结果二维数组
result = new int[n][];
//先初始化第一行和第二行数据
result[0] = new int[]{1};
result[1] = new int[]{1, 1};
//从第三行开始,计算杨辉三角的值
for (int i = 2; i < n; i++) {
result[i] = new int[i + 1]; //第i(从0开始编号)行, 元素个数 i + 1
result[i][0] = 1; //一行的第一个元素值为1
result[i][i] = 1; //一行的最后一个元素,值也为1
for (int j = 1; j < i; j++) {
//第i行第j列的值 = 第i - 1行第j列值 + 第i - 1行第j - 1列
result[i][j] = result[i - 1][j] + result[i -1][j - 1];
}
}
return result;
}
方法
方法定义
方法定义:方法就是完成特定功能的代码块(在有些其他语言中,也被成为函数function)
?
方法定义的格式
?
修饰符 方法返回值类型 方法名(参数1类型 参数1名称,参数2类型 参数2名称, ……) {
方法体语句;
return 返回值;
}
?
方法定义的格式说明:
修饰符:现在先认为是固定的 public static
返回值类型:方法体中的代码执行结果的数据类型
方法名:标识符
参数:类比数学中函数的自变量 z = f(x, y)
方法体:实现具体功能的语句结合
return:跳转控制关键字
返回值:方法执行的到的最终结果,必须和方法名称前面的“返回值类型”保持对应
?
定义方法:两数求和(int)
?
如何写一个方法呢?两个明确
返回值类型 明确功能结果的数据类型
参数列表 明确有几个参数,以及参数的类型
?
对于方法的调用:
1.单独调用:方法名称(参数)
2.打印调用:System.out.println(方法名称(参数))
3.赋值调用:数据类型 变量名称 = 方法名称(参数)
?
方法调用注意事项:
1.方法不调用不执行
2.方法与方法是平级关系,不能嵌套定义
3.方法定义的时候参数之间用逗号隔开
4.方法调用的时候不用在传递数据类型
5.如果方法有明确的返回值,一定要有return带回一个值
方法重载
方法重载(overload) 在同一个类中,允许存在一个以上的同名方法,
a.只要它们的参数个数
b.参数类型不同
c.参数顺序不同:不是指形式参数的变量名顺序不同,而是指形式参数类型顺序
?
编译器如何区分方法呢? 通过方法签名 方法签名:
方法名 + 参数列表 比如 add(int, int)、add(double, dobule)
流程
顺序结构
判断结构
-
if
-
if-else
-
扩展if-else
选择语句-switch
switch语句注意事项:
-
多个case后面的数值不可以重复
-
switch后面小括号当中只能是下列数据类型:基本数据类型:int/short/char/byte
引用数据类型:String字符串/enum枚举
-
switch语句格式可以很灵活:前后顺序可以颠倒,而且break语句还可以省略(不推荐省略) 匹配哪一个case就从哪一个位置向下执行,直到遇到了break或者整结束为止。
循环结构
-
for循环:
for(初始化表达式;布尔表达式;步进表达式){
循环体;
}
-
while循环:
while(条件判断){
循环体;
}
-
do-while循环
do{
循环体;
}while(条件判断)
条件控制语句
-
break
-
continue(一旦执行,立刻跳过当前次循环剩余内容,马上开始下一次循环)
Java内存
java的内存需要划分为5个部分:
-
栈(Stack):存放的都是方法中的局部变量,方法的运行一定要在栈中。局部变量:方法的参数,或者是方法{}内部的变量。作用域:一旦超出作用域,立刻从占内存中消失。
-
堆(Heap):凡是new出来的东西,都在堆当中’。堆内存里面的东西都有一个地址值:16进制。堆内存里面的数据,都有默认值。规则:整数----默认为0,浮点数----默认为0.0,字符----默认为u0000,布尔----默认为false,引用类型----默认为null。
-
方法区(Method Area):存储.class相关信息,包含方法的信息。
-
本地方法栈(Native Method Stack):与操作系统相关.
-
寄存器(pc Register):与CPU相关。
以上是关于JAVA基础的主要内容,如果未能解决你的问题,请参考以下文章