Java语法 关键知识点

目录

 

1. 八大基本数据类型:

2. 引用数据类型:

3. 标识符

4.一个项目project可以有很多类,public class 类名,类名必须与文件名一致;

5. 变量:

6 存储单元:

7. 转义字符:

8.辑运算符:

9.位运算符     ​

10. 运算符优先级:

11. switch方法

12. foreach

13. 方法

14. 数组

15. 集合


1. 八大基本数据类型

整型:byte,short,int,long;(字节数:1 2 4 8)

浮点数:float,double;(字节数:4 8) et: float num = 3.14f; double num = 3.14;

boolean (1字节)

字符型:char;(2字节)(String是引用类型)

(强制类型转换形式:et: double num=3.1111111;  float num1=(float)num;

2.引用数据类型:类都要实例化!

a. 提到引用数据类型(类),其实我们对它并不陌生,如使用过的Scanner类、Random类。

我们可以把类的类型为两种:

  1. 第一种,Java为我们提供好的类,如Scanner类,Random类等,这些已存在的类中包含了很多的方法与属性,可供我们使用。
  2. 第二种,我们自己创建的类,按照类的定义标准,可以在类中包含多个方法与属性,来供我们使用。

第一种//

与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式。

数据类型  变量名  =  new 数据类型();

每种引用数据类型都有其功能,我们可以调用该类型实例的功能。变量名.方法名();//调用前必须先实例化,即定义!

Sanner类获取到录入的数据。使用步骤:

1. 导包:import java.util.Scanner;

2. 创建对象实例:Scanner sc = new Scanner(System.in);

3. 调用方法:int  i = sc.nextInt();用来接收控制台录入的数字;String s = sc.next(); 用来接收控制台录入的字符串

Random类,它可以产生多种数据类型的随机数。Random使用方式:

1. import导包:所属包java.util.Random

2. 创建实例格式:Random 变量名 = new Random(int num);   返回在 0(包括)和指定值(不包括)之间int随机数

String类:定义可以String str;实例化String str = new String();

//第一种

第二种//  

1. 类的定义格式:

    //创建java文件,与类名相同

    public class 类名{

    数据类型  属性名称1;

    数据类型  属性名称2;

    …

    }

2. 类的使用格式:使用方式和使用引用数据类型Scanner类相似。

    导包:我们将所有的类放到同一个文件夹下,可以避免导包。

    创建对象(定义、实例化):类名  变量名 = new 类名();

    调用方法:变量名.方法名(参数);

    访问属性:变量名.属性;(属性即类的成员变量)  //第二种

3. 标识符:

  字母数字下划线美元符组成,不能以数字开头;

(项目名类名首字母大写,变量名方法名首字母小写,多个字母组成都是驼峰型)

 

4. 一个项目project可以有很多类,public class 类名,类名必须与文件名一致;

一个类可以有很多方法(分为普通方法、静态方法、构造方法),main是主方法,程序的入口。(代码只能写在方法里,不能写在类里,类里只能定义变量)

5. 变量:

成员变量(有默认值,整型是0,浮点型是0.0,boolean是false,String是null,char是空格)和局部变量(无默认值)

(成员变量定义在类内,方法外,即类的属性;使用成员变量格式:先实例化类,然后调用)

成员变量和局部变量的区别:

区别一:定义的位置不同

    定义在类中的变量是成员变量

    定义在方法中或者{}语句里面的变量是局部变量

区别二:在内存中的位置不同

    成员变量存储在堆内存的对象中

    局部变量存储在栈内存的方法中

区别三:声明周期不同

    成员变量随着对象的出现而出现在堆中,随着对象的消失而从堆中消失

    局部变量随着方法的运行而出现在栈中,随着方法的弹栈而消失

区别四:初始化不同

    成员变量因为在堆内存中,所有默认的初始化值

    局部变量没有默认的初始化值,必须手动的给其赋值才可以使用。

6. 存储单元:

1B=8bit,1KB=1024B,1MB=1024KB,1GB=1024MB,1TB=1024GB,1PB=1024TB;

 

7. 转义字符:

8. 逻辑运算符:

&  逻辑与   //左右两边的表达式都是要运算,全true为true;

&&  短路与   //&&与&的区别是:如果&&左边的表达式为false,右边不再计算!

| 与 || 同理

^   左右表达式相同为false,不同为true

9.位运算符    

 

10. 运算符优先级:

下图按照运算先后顺序排序(优先级相同的情况下,按照从左到右的顺序依次运算)

优先级

描述

运算符

1

括号

()、[]

2

正负号

+、-

3

自增自减,非

++、--、!

4

乘除,取余

*、/、%

5

加减

+、-

6

移位运算

<<、>>、>>>

7

大小关系

>、>=、<、<=

8

相等关系

==、!=

9

按位与

&

10

按位异或

^

11

按位或

|

12

逻辑与

&&

13

逻辑或

||

14

条件运算

?:

15

赋值运算

=、+=、-=、*=、/=、%=

16

位赋值运算

&=、|=、<<=、>>=、>>>=

 

11. switch语句

case 穿透:case语句只判断一次,如果一次成功,之后不再判断;

switch (week) {

case 1:

case 2:

case 3:

case 4:

case 5:

// 当 week 满足值 1、2、3、4、5 中任意一个时,处理方式相同

System.out.println("今天是工作日");

break;

case 6:

case 7:

// 当 week 满足值 6、7 中任意一个时,处理方式相同

System.out.println("今天是休息日");

break;

}

//需要注意的是,在switch语句中的表达式只能是byte、short、char、int类型的值,如果传入其它类型的值,程序会报错。但上述说法并不严谨,实际上在JDK5.0中引入的新特性enum枚举也可以作为switch语句表达式的值,在JDK7.0中也引入了新特性,switch语句可以接收一个String类型的值。

//default 不一定放在最后!

12. foreach

每次从数组中取出一个值,赋值给i;

例子:变量数组

一维数组arr[]    for(int i : arr){ System.out.println(i+" ");}

二维数组arr[][]   for(int[] i : arr){

                                for(int j : i){System.out.println(j+" ");}

                           }

13. 方法:(类似于其他语言的函数)

在Java中,声明一个方法的具体语法格式如下:

访问权限修饰符  其他修饰符  返回值类型  方法名(参数类型 参数名1,参数类型 参数名2,......){

//  定义方法中的参数是形式参数,传递过来的是实际参数

执行语句

………

return 返回值;

}

// void的方法中可以写  return ;,意味着退出,相当于循环体中的break;

//需要特别注意的是,方法中的“参数类型 参数名1,参数类型 参数名2”被称作参数列表,它用于描述方法在被调用时需要接收的参数,如果方法不需要接收任何参数,则参数列表为空,即()内不写任何内容。方法的返回值必须为方法声明的返回值类型,如果方法中没有返回值,返回值类型要声明为void,此时,方法中return语句可以省略。

//(注:形参和实参

  1. 当调用方法时,如果传入的数值为基本数据类型(包含String类型),形式参数的改变对实际参数不影响
  2. 当调用方法时,如果传入的数值为引用数据类型(String类型除外),形式参数的改变对实际参数有影响)

传参:分为值传递(传递值)和引用传递(传递地址)

//普通方法:(调用方法必须先实例化:方法的类名 变量名 = new 方法的类名(); 调用:变量名.方法名();)

静态方法(static): 不需要实例化,直接调用   类名.方法名();在本类中可以直接调用   方法名();

//非静态方法可以直接调用静态方法

非静态方法可以直接调用静态方法

静态方法只能调用静态方法,不能直接调用非静态

一个类中调用类一个类的静态方法,直接  类名.方法名

调用静态变量,直接  类名.变量名

// 重载  Java允许在一个类中定义多个名称相同的方法,但是参数的类型或个数必须不同,这就是方法的重载。(通过传入不同的参数便可以确定调用哪个重载的方法。值得注意的是,方法的重载与返回值类型无关,它只有两个条件,一是方法名相同,二是参数个数或参数类型不相同。)

//一个方法可以调用另一个方法。一个类中的方法可以调用另一个类中的方法。用法同上。

构造方法:

是对象创建时要执行的方法,在执行这个方法的时候给对象进行属性赋值,从而在创建对象的同时就明确了对象的属性值

//构造格式:

修饰符 构造方法名(参数列表)

{

}

//构造方法的体现:1.构造方法没有返回值类型。也不需要写返回值。因为它是为构建对象的,对象创建完,方法就执行结束。2.构造方法名称必须和类名保持一致。3.构造方法没有具体的返回值。

//构造方法内存图解:

//默认构造方法:

class  Person {

    //如果没有显示指定构造方法,编译会在编译时自动添加默认的构造方法

    //Person(){}  //空参数的默认构造方法

}

//注:

  1. 一个类中可以有多个构造方法,多个构造方法是以重载的形式存在的

    2.  构造方法是可以被private修饰的,作用:其他程序无法创建该类的对象

    3.  构造方法在对象创建时就执行了,而且只执行一次。

14. 数组

1.数组定义:

    a. 数据类型[] 数组名 = new 数据类型[元素个数或数组长度];   (数组有默认值,同成员变量的默认值)

    b. int[] x;     // 声明一个int[]类型的变量                          x = new int[100]; // 创建一个长度为100的数组

2.int length = arr.length;//获取数组长度

3. 数组的静态初始化格式:

    a. 类型[] 数组名 = new 类型[]{元素,元素,……};         b. 类型[] 数组名 = {元素,元素,元素,……};

4. 二维数组的定义:

int[][] arr = new int[3][4]; 

int[][] arr = new int[3][];

int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};

5.不定长数组:int... arr;String...  arrstr;...  ...

只能作为参数传递,且放在参数列表的最后,只能有一个不定长数组!

15. 集合

ArrayList集合相当于是一个长度可变的数组。

1. 创建集合的格式:

   导包:import java.util.ArrayList;

   创建对象:与其他普通的引用数据类型创建方式完全相同,但是要指定容器中存储的数据类型:

   ArrayList<要存储元素的数据类型> 变量名 = new ArrayList<要存储元素的数据类型>();                                                          

 //注:  集合中存储的元素,只能为<>括号中指定的数据类型元素;

    <要存储元素的数据类型>中的数据类型必须是引用数据类型,不能是基本数据类型;//

    基本数据类型对应的引用数据类型:

基本数据类型

对应的引用数据类型表示形式

byte

Byte

short

Short

Int

Integer

long

Long

float

Float

double

Double

char

Character

boolean

Boolean

2. 例子:

public class Student {

String name; //姓名

int age; //年龄

}

Public static void main(String[] args){

ArrayList<Student> list = new ArrayList<Student>();

}

2. 常用方法:

方法声明

功能描述

boolean add(Object obj)

将指定元素obj追加到集合的末尾

Object get(int index)

返回集合中指定位置上的元素

int size()

返回集合中的元素个数

   常用方法补充:

方法声明

功能描述

boolean add(int index,  Object obj)

将指定元素obj插入到集合中指定的位置

Object remve(int index)

从集合中删除指定index处的元素,返回该元素

void clear()

清空集合中所有元素

Object set(int index, Object obj)

用指定元素obj替代集合中指定位置上的元素

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值