文章目录
- Java基础语法
- 二、Java基础语法
- 2.1 一些必须要知道的常识
- 2.2 Java里的注释
- 2.3 数据类型
- 2.3.1 Java的数据类型分为2大类:
- 2.3.2 字面量
- 2.3.3 转义序列
- 2.4 在数字中增加下划线
- 2.5 变量初始化
- 2.6 运算符
- 2.7 位运算
- 2.8 类型转换
- 2.8.1 ==隐式转换==
- 2.8.2 ==强制转换==
- 2.9 一元数字提升和二元数字提升
- 2.9.1 ==一元数字提升(单目运算符)==
- 2.9.2 ==二元数字提升==
- 2.10 关键字和标识符
- 2.11 数组
- 2.11.1 数组的创建
- 2.11.2 数组的内存
- 2.11.3 数组的遍历
- 2.12 方法
- 2.12.1 可变参数
- 2.12.2 参数传递
- 2.12.3 方法签名和方法重载
- 2.12.4 栈帧
- 2.12.5 递归调用
- **
- **Java语言基础**
- 每一条语句以==";"==结尾;
- Java里所说的方法其实就是函数;
- 程序的入口为main方法;
- 方法必须包含在class内部
- public class的名称必须和文件名一致;
- Java里的{ }的写法,{ 一般写在每行的最后;} 独占一行。
Java里有三种注释形式:单行注释、多行注释和文档注释。
文档注释一般用在方法上,内容包含方法的作用、方法的参数及意义、返回值的意义。
大致如下图所示:
Java里的多行注释不能嵌套使用。
1.基本类型
- byte:8bit的整数,1字节,字节型,取值[128,127]
- short:16bit的整数,2字节,短整型,取值[-32768,32767]
- int:32bit的整数,4字节,整型,取值[-231,231-1]
- long:64bit的整数,8字节,长整型,取值[-263,263-1]
- float:32bit,单精度浮点型,取值[1.40E-45F,3.4028235E38F]
- double:64bit,双精度浮点数,取值[4.9E-324,1.797693134862315]
- boolean:布尔型,true、false
- char:单个16bit的字符。在C语言中是1字节,Java中2字节,所以在Java中可以存储字母,也可以存储汉字。
2.引用类型
引用类型的值是对对象的引用(存储对象的地址,类似C中的指针)
//字面量 //整数 //十进制 byte a = 123; //二进制 short b1 = 0b11001; short b2 = 0B10011; //十六进制 int c1 = 0x78A; int c2 = 0x78A; int c3 = 0x78a; int c4 = 0x78a; //long型,以L或l结尾,推荐使用L long d = 100L; //浮点数 //float型,以F或f结尾 float e1 = 12.3F; float e2 = 12.3f; //double型,以D或d结尾 //默认的都是double型 double f1 = 12.3D; double f2 = 12.3d; double f3 = 12.3; //还可以用科学计数法,E或e //123.4,1.234 X 10^2 float g1 = 1.234E2F; double g2 = 1.234e2; //字符串,字符 char c5 = 'a'; //String是引用类型 String str1 = "abcd"; //布尔型 boolean flag1 = true; boolean flag2 = false; //空值 //空串,指向一个空的字符串 String str2 = ""; //没有指向,空指针 String str3 = null;2.3.3 转义序列
- b:退格
- t:制表符
- n:换行
- f:换页
- r:回车
- ":双引号
- ':单引号
- :反斜杠
Java7中可以给数字添加下划线以增强可读性。
2.5 变量初始化- 任何变量在使用前都要初始化(赋值)
- 实例变量(成员变量)和类变量(加了static的变量),编译器会自动设置初始值。
注意: 当多个优先级一样的运算符同时出现时按照结合性运算。
- 表格里优先级从上到下一次降低
- 只有赋值运算符是从右到左
- 其他的都是从左到右
尽量使用小括号来保证运算的顺序。
- << 左移
- >> 有符号右移(最左边用符号位补齐,原数的最左边的数)
- >>> 无符号右移(最左边用0补齐)
- & | ^ 可以用在boolean类型上
- && || 多了短路功能
短路: 只要运算符左边已经可以判断整个表达式的结果,则右边部分就不会运行了。
public static boolean fun(){ System.out.println("执行了"); return true; } public static void main(String[] args) { System.out.println(false && fun());//false System.out.println(true && fun());//true 打印 “执行了” }2.8 类型转换 2.8.1 隐式转换
拓宽基本类型,数据范围小的可以自动转换为数据范围大的。
2.8.2 强制转换窄化基本类型,数据范围大的转换为数据范围小的可能会丢失精度和范围,因此需要强制转换,比如long类型的转int型的:
long a = 10L; int b = (long) a;
注意:short转char、byte 和char转byte、short
2.9 一元数字提升和二元数字提升 2.9.1 一元数字提升(单目运算符)将byte、char、short类型的一元数字自动提升为int型。
1.数组的索引、2.创建数组时的数组长度、3.一元运算符+和-(在整数中为正和负,在字符里会转换为int型的ASCll码)、4.按位取反~、5.位移运算符(<<、>>、>>>)这些情况下会执行一元数字提升。
1.如果一个数字是double/float/long型,则另一个也会转为double/float/long型;否则两个数字都转换为int型。
2.会执行二元数字提升的情形:
* / % + - < <= > >= == != & ^ | ?:
- 关键字: abstract、continue、for、new、switch、assert、default、goto、package、synchronized、boolean、do、if、private、this、break、double、implements、protected、throw、byte、else、import、public、throws、case、enum、instanceof、return、transient、catch、extends、int、short、try、char、final、interface、static、void、class、finally、long、strictfp、volatile、const、float、native、super、while
- 标识符: 变量名、方法名、类名
1.标识符的命名规则:不限长度的Java字母、Java数字序列,必须以Java字母开头;不能使用关键字;不能使用字面量true,false,null。
2.Java字母:ASCII 中的 AZ、az,美元符($),下划线(_),中文,韩文,日文等字符;
3.Java数字:ASCll中的数字0~9。
int[] arr1; int[] arr2 = {};//空数组 int arr3[] = {};//空数组 //定义数组时指定数组元素 int[] arr4 = new int[] {1,2,3,4}; int[] arr5 = {1,2,3,4};//语法糖 //定义数组时指定数组长度 int[] arr6 = new int[6]; //多维数组 int[][][] arr7;
注意: 在Java中,字符数组不等于字符串!
- 字符数组:char[]
- 字符串:string
如果直接打印数组,则会得到==[I@6d6f6e28== ,这不是数组的地址,而是hash值。
2.11.2 数组的内存执行一个方法,Java就会在栈空间中分配一个栈帧。
int[] array = { 11,22,33};
Java中的数组属于引用类型,数组元素存储在堆空间中。首元素的内存地址就是数组的地址。
注意: Java中的堆内存申请会自动进行初始化。
Java中取数组元素的原理:随机访问,速度非常快,O(1)。Java底层根据数组下标计算出要取的元素的内存地址,然后根据地址直接到堆内存中读出数据。
int[] arr = {1,2,3,4}; //for循环遍历 for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } //for-each遍历,缺点是没有数组的下标 for (int i : arr) { System.out.println(i); }2.12 方法
Java中的方法其实就是函数。
方法的格式:
修饰符 返回值类型 方法名(参数列表){ 方法体 }
public static int sum(int... ints){ int i = 0; for (int j : ints) { i += j; } return i; }
- 可变参数必须是方法中的最后一个参数,形如 int… ints 这样的就是可变参数。
- 参数个数不受限制。
- 实际上就是数组,只不过在调用方法时不需要传数组。
- 可变参数 不传任何值时,为空,而不是null
- printf底层就是使用的是可变参数。
- 值传递(传值)
基本类型作为参数; - 引用传递(传地址)
引用类型作为参数; - 返回值
若返回值为基本类型,则返回的是值;若返回值为引用类型,则返回的是地址(引用)。
方法名和参数类型组成方法签名。
同一个类里,不能定义两个相同方法签名的方法;方法重载指的是方法名相同,但方法签名不同,即:
- 两个方法的参数个数不同
- 两个方法的参数类型不同
注意: 重载与方法的返回值类型、参数名称无关!
战阵随着方法的调用而创建,随着方法的结束而摧毁,它存储了方法的局部变量信息。
2.12.5 递归调用- 递归调用若没有终止,将会一直消耗栈空间,最终导致内存溢出。
- 必须要有明确的结束递归的条件,叫做边界条件、递归基。
**
一、Java的前世今生和自身的特点
二、Java基础语法
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)