day2 关键字、常量及运算符、函数

关键字、标识符

任何一门高级语言基础组成都一样,表现形式不一样。

1、关键字:赋予Java含义的单词,都是小写(紫色)

class Demo{
	public static void main(String[] args){
	}
}

2、标识符

  • 表示某些东西的符号,有规则(26个英文字母的大小写,0-9,_ ,$组成)
  • 数字不能开头,不可以使用关键字
    比如类名:Demo就不能写成2Demo,Demo_1$test

常量、变量与运算符

常量

常量的分类:整数、小数、布尔常量(Boolean,只有两个值,关键字,true、false)、字符(数字0-9,字母,符号,‘a’要用单引号标示)、字符串(可放多个,“”空字符串,注意与null区分)、null(只有一个数值就是null)

  • 整数常量:
    二进制(0,1)、八进制(0-7)、十进制(0-9)、十六进制(0-9,A-F)
    例如:23(十进制)、023(八进制)、0x23(十六)
    数据的最小单位:字节
变量
class VarDemo{
   public static void main(String[] args) {
      //数据类型 变量名 = 初始化值;
         byte b = 3;  //定义变量,在内存中开辟一块区域,类型是byte,名称是b,里面存着3
         /*b = 8;     //使用变量,使里面存放的数据为8*/
         short s = 2000;
         int x = 12;
         long k = 12343245L;//注意L
         float f = 2.3f;
         double d = 3.4;
         char ch = '你';
         boolean bl = true;
         bl = false;
      {
         int u = 9;
         System.out.println(u);
      }
      System.out.println(u);
      System.out.println(bl);     
   }
}

内存中的一个存储区域;该区域有自己名称(变量名)和类型(数据类型,强类型:指定该类型只能放在该区域);该区域的数据可以再同一类型范围内不断变化;可以不断的被重复使用;

什么时候使用变量:数据不确定时,不管你数据如何改变,我需要时,只要从这个区域找该数据就好
数据类型(8种常用数据类型,3种引用型数据)

  • 基本类型:
    • 数值型:
      • 1、整数类型(byte-8bit,short-16bit,int-32bit,long-64bit)
        注:第一位都是符号位,如byte是-128到127,而且不用记,用Java判断
      • 2、浮点类型(float-4byte,double-8byte)
        字符型:char,两个字节,装单个,可以存放一个中文,但放一个12不行
        布尔型:不是数值型,不能做运算
    • 引用类型(指向的都是对象):
      类class
      接口Interface
      数组array
  • 变量范围:两个括号中间
    u只在括号中有作用,离开括号就无效
自动类型转换 /强制类型转换
  • 自动类型提升/转换
class VarDemo2{
	public static void main(String[] args) {
		int x = 3;//4byte
		byte y = 5;//1byte
		x = x + y;//两边不一致,数值型可以运算,会完成一个自动类型提升的动作,一致性以占用内存比较大的为主。
		System.out.println("Hello World!");
	}
}
  • 强制转换
class VarDemo3{
	public static void main(String[] args) {
		/*这是自动提升
		int x = 3;//4byte

		byte y = 5;//1byte

		x = x + y;
		//两边不一致,数值型可以运算,
		//会完成一个自动类型提升的动作,一致性以占用内存比较大的为主。
		*/

		byte b = 3;//这里b是1个8位

		//  b = b + 4;
		//这里4是一个整数,默认是4个8位,
		//运算时,b要提升,当运算完,4个8位的结果赋值不了1个8位的b

		b = (byte)(b + 4);//强制转换,但会丢弃高的3个8位
		System.out.println(b);
		System.out.println('a'+1);
	}
}

float与int做运算还是小数
char与int做运算后是int

byte b = 3;
b = 4 + 6;
System.out.println(b);

byte b =3;//这里一个b是8位
byte b1 = 4;
byte b2 = 6;
b = b1 + b2;
System.out.ptintln(b);

比较上面两种结果:
定义了b的类型是byte,在给b赋值常量(int)4后,会做一个将4(int) 转换为byte的动作。
第一种是常量,是固定的,可以检查判断是否在范围之内,不会报错。
第二种是变量,是不确定的,无法判断是否在范围内,假设b1=127。
变量是变化的,一变化很容易丢精度 ,无法判断是否在范围内,会报错。

byte b1 = 4;
byte b2 = 6;
int b = b1 + b2;
System.out.ptintln(b);

这样可以,因为不管两个变量如何改变,使用在x的范围内。

int x;
int x1 = Integer.MAX_VALUE;
int x2 = 2;
x = x1 + x2;
System.out.ptintln(x);

int不会报错,只保留32位,高位舍弃,舍弃代表最高位变成1,是负数,因为是默认类型。

运算符

算术运算符:
除法舍弃小数位,+,-,*,/,%(4%5=4,利用%2的特点0,1进行开关运算),
+(连接符,3+“21”=321,任何数加字符串,如:“5”)。

class OperateDemo {
	public static void main(String[] args) {
		int a=2,b;
//		a++; //独立运算,a=a+1
//		b = a++;  //a=3,b=2,这里的a既有自增运算,又有赋值运算,所以a先保留自己的值,先做右边自己的自增运算,a=3,然后保留的值参与赋值运算,b=2
				  //右面的a++没算完,不能参与左面的赋值运算,所以要保留自己的值,对两面进行运算,左面赋值,右面做自己的自增
//		b = ++a;   //a=3,b=3,同理,这里是右面的a自增a=3,然后整体给b,b=3
		
		b = a = a + 1;//a=3,b=3

		/*
		int i = 3;
		i = i++;
		
		过程如下
		temp=i;
		i=i+1;
		i=temp;
		*/
		
		System.out.println("a="+a+","+"b="+b);//
	}
}
  • 赋值运算符
class OperateDemo2{
	public static void main(String[] args){
		int a=2,b;
		//赋值运算符。 =  += -= /= %=
//		int a,b,c;
//		a =b=c=4

//		int a = 4;
//		a+=2;//左右两边的和赋给左边


		short s = 3;//short两个字节
		s+=4;//不会报错,这是一次运算,两边加完以后,会判断,在范围内转换为short,在底层自动做转换
		//s = s + 4;//会报错,变量未知,精度丢失,无法判断范围,这是两次运算,与上面唯一的不同是不做转换。
		//s = (short)(s + 4);
		System.out.println("a="+a+","+"b="+b);//
	}
}
	

只要是运算符,运算完都有结果

  • 比较运算符
    >,<,== 结果是true/false
运算符运算范例结果
==/!=相等于/不等于4==5/4!=5false/true
</>大于/小于4<3/4>3false/true
<=/>=大于等于/小于等于4<=5/4>=5true/false
  • 逻辑运算符(用于连接两个boolean类型的表达式)
    &:与, true&true=true,int x=4 x>2&x<5 true
    |:或,
    :异或,相同为零,不同为一,truetrue=false;false^false=false
    !:非运算,判断 !true=false
    &&:短路;遇零为零,后面不运算;与&结果一样
    ||:短路;遇一为一,后面不运算;与|结果一样
  • 位运算符(用于二进制位运算的符号)
class OperateTest {
	public static void main(String[] args) {
/*		//最有效的方式算出3*8

		System.out.println("3*8="+(3<<3));
*/

		//对两个整数变量的值进行互换
		
		int a = 3 , b = 5;
		System.out.println("a="+a+","+"b="+b);
		

		/*
		int temp = a;
		a = b;
		b = temp;
		*/


		//这种方式不要用,若超出范围,会缺失精度
		/*
		a = a + b;
		b = a - b;
		a = a - b;
		*/

		
		a = a ^ b;	//a = 3 ^ 5;
		b = a ^ b;	//b = (3^5)^5;
		a = a ^ b;	//a = (3^5)^3;(利用一个数异或同一个数两次,还是这个数)

		System.out.println("a="+a+","+"b="+b);
		//开发实际利用第一种,面试使用第三种
	
	}
}

    &:6&3=0--0,0010(遇零为零)=2
    |:6|3=0--0,0111(遇一为一)=7
    ^:6^3=101=5;6^3^3=6(一个数异或同一个数两次,结果还是这个数),应用:加密
    ~:反码,~6=-7
    <<:左移,3<<2=12,3左移两位,左移乘2
    >>:右移,移的时候要保证符号位一样,移的时候补的都是1
    >>>:无符号右移,不论原高位是什么,都用零补
    运用:想要运算高效,首选位运算,位运算直接运算在二进制!!
  • 三元运算符(唯一;if,else的简化)
    格式 :(条件表达式:真/假)?表达式1:表达式2;
    若条件是真,则运算1;否则,运算2
    应用:
class OperateDemo5 {
	public static void main(String[] args) {

		int x = 3,y;

		y = (x>1)?100:200;
		System.out.println("y="+y);

		//获取两个整数中的较大的整数。

		int a,b;
		int max = a>b?a:b;

		//获取三个整数中的较大的整数。

		int o,p,q;
		int temp = o>p?o:p;
		int max2 = temp>q?temp:q
		//int max2 = (o>p?o:p)>q?temp:q
	}
}

函数

一,定义:定义在类中具有特定功能的一段独立小程序,也称作方法。

error:静态修饰的函数在调用别的函数式,该函数也要是静态的,解决办法就是给add函数加同样的修饰符static

二,定义函数的格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2, …)
{
执行语句;
return 返回值;
}
在Java中,Java是强类型,对每一种数据都进行了严格明细的划分。
注:名称定义要有阅读性,如果名称在两个以上的单词时,第一个单词首字母小写,之后每个单词首字母都大写
参数有顺序,return能将函数值返回给调用者,还能结束函数。
函数中只能调用函数,不能在函数中定义函数。
特殊情况:功能没有返回值。
return后面直接用分号结束。
返回值类型怎么体现?因为没有具体的返回值,所以不可以写具体的返回值类型。
在Java中只能用一个关键字来表示,返回值类型用void表示。
eg:

注意:如果返回值类型是void,return;可以省略不写

写代码要提高代码的复用性,相同的东西第二次就开始要思考是不是被复用。

三,函数特点:
将功能封装;便于该功能复用。

定义函数时,函数值要返回给调用者,由调用者处理。

四,如何写函数

两个明确:明确一:这个功能的结果是什么?
明确二:这个功能实现的过程中是否有未知的内容参与运算?
错误:public static char grade(int x)
{
char y;

	if(x>=90 && x<=100)
		y='A';
	if(x>=80 && x<90)
		y='B';
	if(x>=70 && x<80)
		y='C';
	if(x>=60 && x<70)
		y='D';
	if(x<60)
		y='E';

	return y;//报错!!!可能尚未初始化变量
}

分析:编译用于检查代码,只检查语法,上面的代码中语法错误,编译时不会管你的范围是否找全,最后一个if就算写成(x<60||x>100),也不行。虚拟机会看你的范围,因此,编译他始终认为你的范围没有找全。下为修改后:

五,函数的重载(overload)
重复载入 ;在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可
1、同一个类
2、同名
3、不同参数类型or不同参数个数
4,、函数重载与返回值类型无关
5、Java是严谨性语言,如果函数调用出现不确定性,会编译失败

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值