【JAVA学习】2、JAVA语言学习1:基本常识

1 标识符和关键字

只要是起名字的地方,名字就是标识符。
标识符定义规则:
(1)组成部分:数字、字母、下划线,美元符号。
(2)不可以:不能以数字开头,不能使用java关键字。
(3)见名知意。
(4)大小写敏感。
(5)大驼峰命名(如:MyProject)
类名:首字母大写,驼峰命名;
方法、变量:首字母小写,其余驼峰命名;
包名:全部小写。
(6)长度不限制,但是不要太长。

关键字:JAVA语言赋予了特殊含义,用作专门作用的单词。

2 常量和变量

字面常量,字符常量

Java中利用final来定义常量,常量一旦被初始化后不能再更改。一个变量被final修饰后就变成了常量,值不可变,这个变量即为字符常量,字符常量名字要全部大写。

变量本质上代表一个“可操作的存储空间”,空间位置确定,但位置里放什么值不确定,可以操纵这个存储空间存储的值。JAVA是强类型的语言,声明变量时必须定义类型。不同类型的变量占内存大小不同,以达到节省空间的目的。

如果只定义一个变量,但没有初始化,相当于没有定义。没有初始化就使用变量会报错。变量不可以重复定义,变量名不能重复。

javap命令可以看到底层执行的过程

	javap -v xxx.class

变量作用域:即变量在什么范围有效。离变量最近的花括号。
局部变量:方法中的变量;
成员变量:类中、方法外的变量;

数据类型:
基本数据类型:数值型(整数类型byte 1字节, short 2字节, int 4字节, long 8字节),浮点类型 (float 4字节,double 8字节),字符型,布尔型;

引用数据类型:类,接口,数组。

乱码问题:编码和解码的编码类型要一致(GBK, UTF-8, ANSI)

基本数据类型转换:数据类型不匹配时会进行类型转换,有自动类型转换和强制类型转换。数据类型占位小的像大的转换会发生自动类型转换(如:把整数放在double类型变量),反之需要进行强制类型转换。

多种数据类型参与运算时,整数类型、浮点类型、字符类型都可以参与运算,但布尔类型不能。

类型级别( 从低到高 ):

	byte,short,char-->int-->long-->float-->double

当一个表达式中有多种数据类型时,要找出当前表达式中最高级别的类型,其余类型都转换为当前表达式中最高级别类型进行运算。

在进行运算时,类型级别与类型转换:
左=右:直接赋值;
左<右:强转;
左>右:自动转换。
特殊情况:对于byte,short,char,只要在他们的表述范围中,赋值就不用进行强制转换,可以直接赋值。

3 运算符

逻辑运算符和位运算符
逻辑运算符:左右连接的是布尔类型的操作数;&、|、&&(短路与,第一个表达式为false时第二个表达式不再计算,此时效率高于&)、||、!、^
位运算符:左右连接的是具体的数值。&(按位与),|,^(异或),~(取反),>>(有符号右移,右移是除),<<(左移是乘),>>>(无符号右移)

例如,4乘8最快的方式?4<<3(4左移三位)

二进制求一个数的负数:取反,加一。

运算符优先级:赋值<三目<逻辑<关系<算数<单目(!,++,~,–)

4 流程控制

顺序结构,条件判断结构(分支结构),循环结构。

分支结构:if,switch
循环结构:while,do while,for

循环只是提高了程序员编写代码的效率,但底层执行时仍然是重复执行。三种循环的底层效率一样高。
循环分为当型和直到型。
循环四要素:条件初始化;条件判断;循环体;迭代
什么情况用do-while:先执行后判断

for(条件初始化;条件判断;迭代){
循环体
}

break、continue、return关键字

 
outer: for(int i=1;i<=100;i++){   //outer是标签的名字,给外层循环起的名字
	       System.out.println(i);
			while(i==36){
					break outer;  //这时终止的是外层的循环,默认是离break最近的循环
			}
		}

continue关键字也可以使用标签

outer: for(int i=1;i<=100;i++){   //outer是标签的名字,给外层循环起的名字
	       System.out.println(i);
			while(i==36){
					continue outer;  //这时终止的是本次外层的循环,进行下一次循环
			}
		}

return:遇到return结束当前正在执行的方法

int count=0,count1=0,count2=0;
int num;
Scanner input=new Scanner(System.in);
while(count<=10){
	num=input.nextInt();
	if(num>=0)count1++;
	else count2++;
	if(num==666){
	   System.out.println(count1);
	   System.out.println(count2);
	   if(count<10)  System.out.println("不正常");
	   else System.out.println("正常");
		return;}
	count++;
}

for(int i=1;i<=9;i++){
	for(int j=1;j<=i;j++){
		System.out.print(i+"*"+j+"="+i*j+"\t");
	}
	System.out.println();
}
for(int i=1;i<=3;i++){
	for(int j=1;j<=9;j++){
		System.out.print(*);
	}
	System.out.println();
}

5 方法的定义、调用和重载

方法:一段用来完成特定功能的代码段。
方法用于定义该类或该类的实例的行为特征和功能实现。方法是类和对象行为特征的抽象。面向对象中,整个程序的基本单位是类,方法是属于类和对象的。方法和方法是并列的关系,定义的方法不能写在main方法中。

方法的定义(写方法):形参列表怎么写(几个参数,什么类型);方法是否需要返回值(返回值类型是什么)。

修饰符 方法返回值类型 方法名(形参列表){
   方法体;
   return 方法返回值;  //将返回值返回到方法调用处
   }

方法的调用(用方法):实际参数怎么传入(传几个参数,什么类型);是否有返回值要接收。同一个类中的方法可以直接调用。

方法的作用:提高代码的复用性。

方法的重载:在同一个类中,方法名相同,形参列表不同的多个方法,构成了方法的重载。调用时会根据不同的参数自动匹配对应的方法。方法的重载只跟方法名和形参列表有关,与修饰符、返回值类型无关。形参列表不同指的是个数或顺序或类型不同。重载方法实际是完全不同的方法,只是名称相同而已。

可变参数

作用:提供一个方法,参数个数是可变的。解决了部分方法的重载问题。是JDK1.5之后的特性。
int…num
double…num
boolean…num
只能传入某一个类型的参数。

在方法内部对可变参数的处理跟数组一样。

可变参数和其他数据一起作为形参时,可变参数要放在最后。

public void method(int num1, int...num){}
public class Test{
    public static void main (String[] args){
		method(10);
		method();
		method(12,23,24);
		method(new int[]{1,2,3,4,5});
	}
	
	public void method(int...num){
		System.out.println("可变参数");
	}
}
//这个程序会输出四次可变参数。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值