JAVA SE Day_2

JAVA 语言基础

2.0 关键字

  • 关键字:被Java语言赋予特殊含义的单词,不能乱用!
  • 关键字特点:组成关键字的字母全部小写
  • 关键字注意事项:goto和const作为保留存在,不推荐使用。高级记事本对其有特殊颜色标记
    在这里插入图片描述

2.1 标识符的概述和组成规则

在编程过程中,经常需要在程序中定义一些符号来标记一些名称,如包名、类名、方法名、参数名、变量名等,这些符号被称为标识符。标识符可以由任意顺序的大小写字母、数字、下划线(_)和美元符($)组成,但标识符不能以数字开头,不能是Java中的关键字,数字不能开头

2.2 标识符中常见的命名规范

在Java程序中定义的标识符必须严格遵守上面列出的规则,否则程序在编译时会报错。除了上面列出的规则,为了增加代码的可读性,还需要遵守以下规范:

  1. 包名所有字母一律小写,单词与单词之间用.连接 例如openlab.java.test。
  2. 类名和接口名每个单词的首字母都要大写,例如ArrayList、StringDemo。大驼峰
  3. 常量名所有字母大写,单词之间用下划线连接,例如INTEGER_MAX、DAY_OF_MONTH。
  4. 变量名和方法名的第一个单词首字母小写,从第二个单词开始每个单词首字母大写,例如userName、getUserName。小驼峰
  5. 在程序中,应该尽量使用有意义的英文单词来定义标识符,使得程序便于阅读

2.3 注释概述及其分类

在编写程序时,为了使代码易于阅读,通常会在实现功能的同时为代码加一些注释。注释是对程序的某个功能或者某行代码的解释说明,它只在Java源文件中有效,在编译程序时编译器会忽略这些注释信息,不会将其编译到class字节码文件中去。
Java中注释分类格式:

  • 单行注释 //注释文字
  • 多行注释 /注释文字/ 多行注释中不能有多行注释
  • 文档注释 /*注释文字/

2.4 注释的作用

解释说明程序,提高程序的阅读性可以帮助我们调试程序
严重提醒

  • 注释是一个程序员必须要具有的良好编程习惯
  • 初学者编写程序可以养成习惯:先写注释再写代码
    将自己的思想通过注释先整理出来,再用代码去体现
    因为代码仅仅是思想的一种体现形式而已

2.5 常量的概述和使用

常量就是在程序中固定不变的值,是不能改变的数据。例如数字1、字符‘a’、浮点数3.14等。
Java中包含的常量如下所示。字面值常量(直接在程序中出现的数据),自定义常量

  • 整型常量
    整型常量是整数类型的数据,有二进制、八进制、十进制、十六进制4种表示形式,具体表示形式如
    下。
    二进制:由数字0和1组成的数字序列。在JDK1.7中允许使用字面量来表
    示二进制数,前面要以0b或者0B开头,目的是为了和十进制进行区分,如
    0b1001。
    八进制:以0开头,并且其后由0~7范围内的整数组成的数字序列,如
    0432。
    十六进制:以0x或0X开头,并且其后由09、AF组成的数字序列,如
    0Xed13。
  • 浮点数常量
    浮点数常量就是数学中用到的小数,分为float单精度浮点数和double双精度浮点数两种类型。
    其中,单精度浮点数后面以F或f结尾,而双精度浮点数以D或d结尾。当然,在使用浮点数时,也可以不写结尾处的后缀,此时虚拟机默认是double双精度浮点数。
  • 字符常量
    字符常量用于表示一个字符,一个字符常量要用一对英文半角格式的单引号’’引起来,它可以是英文字母、数字、标点符号以及由其他转义序列来表示的特殊字符。
    其中’\u0000’表示一个空白字符,即在单引号之间没有任何字符。之所以能这样表示,是因为Java采用的是Unicode字符集,Unicode字符以\u开头。
  • 字符串常量
    字符串常量用于表示一串连续的字符,一个字符串常量要用一对英文半角格式的双引号””引起来。
  • 布尔常量
    布尔常量即布尔型的两个值true和false,该常量用于区分一个事物的真与假。
  • null常量
    null常量只有一个值null,表示对象的引用为空。

2.6 进制转换

Java针对整数常量提供了四种表现形式:
二进制
八进制
十进制
十六进制
进制:就是进位制,是人们规定的一种进位方法。对于任何一种进制,X进制,就表示某一位置上的
数运算时逢X进一位。二进制就是逢而进一,以此类推。
在这里插入图片描述

2.7 变量的概述及格式

变量:在程序执行的过程中,在某个范围内其值可以发生改变的量。
变量定义格式:
数据类型 变量名=常量值;
深入

  • 变量其实就是内存区域中的一个小空间
  • 该空间有其物理地址值,但是不方便访问,所以用变量名去替代
  • 该空间是有大小的,具体大小看具体数据类型
  • 该空间的值只能在能够相互兼容的两种数据类型之间进行改变
  • 常量值不是存在变量的小空间里面的,而是存在常量池
  • 变量小空间里存储的仅仅是常量在常量池中的地址
    注意:变量存储的仅仅是地址,常量池中常量的地址,堆内存中对象的地址
    在这里插入图片描述

2.8 数据类型的概述和分类

Java语言是静态编译型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间。
在定义变量时必须声明变量的类型,在为变量赋值时必须赋予和变量同一种类型的值,否则程序会报错。
在Java中所有的整数常量默认是int型,所有的小数常量默认是double型。

  • 整数类型变量
    整数类型变量用于存储整数数值,即没有小数部分的值。为了给不同大小范围的整数合理地分配存储空间,整数分为4种不同的类型:字节型(byte)、短整型(short)、整型(int)和长整形(long),4中类型所占存储空间的大小以及取值范围如下所示。
    在这里插入图片描述
    在这里插入图片描述
  • 浮点类型变量
    浮点类型变量用来存储小数数值。在Java中,浮点数类型分为两种:单精度浮点数(float)和双精度(double)。double型所表示的浮点数比float型更精确,两种浮点数所占存储空间大小以及取值范围如下所示。
    在这里插入图片描述
  • 字符类型变量
    字符类型变量用于存储一个单一字符,在Java中用char表示。Java中每个char类型的字符都会占用2个字节。在给char类型的变量赋值时,需要使用一对英文半角格式的单引号’’把字符括起来,如’a’,也可以将char类型的变量赋值为0~65535范围内的整数,计算机会自动将这些整数转化为所对应的字符,如数值97对应的字符为’a’。
  • 布尔类型变量
    布尔型变量用来存储布尔值,在Java中用boolean表示,该类型的变量只有两个值,即true和
    false。

2.9使用变量的注意事项

  • 作用域:变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域不能定义两个重名的变量。
  • 初始化值:没有初始化值不能直接使用
    在一行上建议之定义一个变量,可以定义多个,但不建议

2.10 数据类型转换

在程序中,当把一种数据类型的值赋给另一个数据类型的变量时,需要进行数据类型转换。根据转换方式的不同,数据类型转换可分为两种:自动类型转换和强制类型转换。
在程序中,当把一种数据类型的值赋给另一个数据类型的变量时,需要进行数据类型转换。根据转换方式的不同,数据类型转换可分为两种:自动类型转换和强制类型转换。

  • 自动类型转换
    自动类型转换也叫隐式类型转换,指的是两种数据类型在转换的过程中不需要显示地进行声明。要实现自动类型转换,必须同时满足两个条件,第一是两种数据类型彼此兼容,第二是目标类型的取值范围大于源类型的取值范围。
  • 整数类型之间可以实现转换,如byte类型的数据可以赋值给short、int、long类型的变量,short、char类型的数据可以赋值给int、long类型的变量,int类型的数据可以赋值给long类型的变量。
  • 整数类型转换为float类型,如byte、char、short、int类型的数据可以赋值给float类型的变量。
  • 其他类型装换位double类型,如byte、char、short、int、long、float类型的数据都可以赋值给double类型的变量。
  • 强制类型转换
    强制类型转换也叫显示类型转换,指的是两种数据类型之间的转换需要进行显示地声明。当两种类型彼此不兼容,或者目标类型取值范围小于源类型时,自动类型转换无罚进行,此时需要进行强制类型转换。
  • boolean类型不能转换为其他的数据类型
    默认转换:byte,short,char→int→long→float→double
    强制类型转换:目标类型 变量名=(目标类型)(被转换的数据)
class Test1{
	public static void main(String[] args){
		//整型常量默认int 4byte 浮点型常量默认double 8byte
		//定义一个byte变量 1byte
		byte b1=10;
		//00000000 0000000 0000000 00001010		四斤容量的碗里有二两饭
		//						   00001010		一斤容量的碗里能放二两饭
		//不兼容的类型: 从int转换到byte可能会有损失
		//byte b2=128;
		//00000000 0000000 0000000 10000000		四斤容量的碗里有一斤二两饭
		//						   10000000		一斤容量的碗里最多能放一斤饭
		//悬念:反码 补码 负数二进制码
		byte b3=(byte)128;//强制转换 
		System.out.println(b3);//Byte

		//定义一个short变量 2byte
		short s1=180;
		//不兼容的类型: 从int转换到short可能会有损失
		short s2=(byte)6666666;//Short
		System.out.println(s2);

		//定义一个int变量 4字节
		int i1=123123123;
		System.out.println(i1);
		System.out.println(Integer.MAX_VALUE);//MIN_VALUE
		
		//定义一个long变量 8字节
		//错误: 过大的整数:
		System.out.println(Long.MAX_VALUE);
		long l1=123123123123123123L;//整数常量(int)+L->Long常量
		System.out.println(l1);

		System.out.println("==============");
		byte b4=100;
		byte b5=100;
		byte b6=(byte)(b4+b5);//因为b4+b5的结果可能会超出byte
		//不兼容的类型: 从int转换到byte可能会有损失
		System.out.println(b6);

		short s3=5;
		short s4=7;
		//不兼容的类型: 从int转换到short可能会有损失
		//short s5=s3+s4;

		int i2=Integer.MAX_VALUE;
		int i3=1;
		int i4=i2+i3;
		System.out.println(i4);
		//上述的byte和short变量之和是个int 然后从int转byte/short的时候 可能损失
		//int和int之和本身还是int 再赋给int 没问题
		//哪怕是超出int范围了,也能加
	}
}

2.11 算数运算符的基本用法

在这里插入图片描述

显示格林时间

import java.util.Scanner;
class java2_4
{
	public static void main (String[] ages){
		System.out.println("Enter the time zone offsets of GMT :");
		Scanner scanner=new Scanner(System.in);
		int time=scanner.nextInt();//时区偏移量
		long totalMilliseconds=System.currentTimeMillis();
        //获取从时间戳到当前时间的总毫秒数
		long totalSecond=totalMilliseconds/1000;
		//转化为总秒数
		long totalMinute=totalSecond/60;
		//转化为总分钟数
		long totalHour=totalMinute/60;
        //转化为总小时数

		long currenthour=(totalHour%24)+time;
        //计算当前小时+时区偏移量(time)
		long currentminute=totalMinute%60;
		//计算当前分钟
		long currentsecond=totalSecond%60;
	    //计算当前秒数
		System.out.println("The currrent time is"+currenthour+":"+currentminute+":"+currentsecond);
	    //输出当前时间
	}
}

2.12 赋值运算符的基本用法

在这里插入图片描述

2.13 比较运算符的基本用法

在这里插入图片描述

2.14 逻辑运算符的基本用法

在这里插入图片描述
在使用逻辑运算符的过程中,需要注意以下几个细节:
逻辑运算符可以针对结果为布尔值的表达式进行运算。
运算符&和&&都表示与操作,当且仅当运算符两边的操作数都为true时,其结果才是true,否则结果为false。当运算符&和&&的右边为表达式时,两者在使用上还有一点的区别。在使用&进行运算时,不论左边为true或者false,右边的表达式都会进行运算。如果使用&&进行运算时,当左边为false时,右边的表达式不会进行运算,因此&&被称为短路与

class Test4{
	public static void main(String[] args){
		/*
			运算符:
			算数运算符:+ - * / % ++ --
			赋值运算符
			比较运算符
			逻辑运算符
			位运算符
			三元运算符
		*/
		int i=11;
		System.out.println(i%5);//1
		//取余 能用在什么地方
		//1.判断奇偶 偶数%2=>0 奇数%2=>1
		//2.周期计算 1月1号是周二 1月20号是周几?
		/*
				0 周一
			1%7=1 周二
				2 周三
				3 周四
				4 周五
				5 周六
				6 周日
			18%7=4
		*/
		System.out.println(-10%3);//-1
		System.out.println(10%-3);//1
		System.out.println(-10%-3);//-1

		//自增 n++ ++n 自减同理
		//++n 直接加1再参与运算 不对的!
		//n++ 先调用再加1
		/* n++ 
		第一步:开辟临时存储区
		第二步:将变量的值复制给存储区
		第三步:变量自身的值+1
		第四步:存储区的值等待被调用(赋值,打印)
		*/
		int a=3;
		a++;//a=4
		System.out.println(a);//a=4
		System.out.println(a++);//4 a=5
		int b=a++;//b=5 a=6
		System.out.println(a);//6
		System.out.println(b);//5
		a=a++;//a=7
		System.out.println(a);//6
		a=a++;//a=8
		System.out.println(a);//6
		
		//赋值运算符:+= -= *= /= %= 
		int age=10;
		age+=10;//age=age+10
		age*=10;//age=age*10
		short s=10;
		s+=100000000;//s=s+10
		//不兼容的类型: 从int转换到short可能会有损失
		//s=s+10;
		System.out.println(s);

		//比较运算符:> < >= <= == != 计算的结果为布尔类型
		//System.out.println(3>2>1);
		int num1=3;//0x123
		int num2=5;//0x321
		//比的其实就是两个变量中个存储的常量在常量池中的地址
		System.out.println(num1==num2);
		System.out.println(num1!=num2);

		//逻辑运算符:& | ! ^ && || 结果为布尔类型
		//与 有假则假 全真则真
		//或 有真则真 全假则假
		//非 取反
		//异或	相同为假 不同为真
		System.out.println(3>2&1>2);
		System.out.println(3>2|1>2);
		System.out.println(3>2^1>2);
		System.out.println(!(3>2));

		int p=0;
		int v=0;
		System.out.println(p++>0&v++>0);
		System.out.println(p);//1
		System.out.println(v);//1
		System.out.println(p++>1&&v++>1);
		System.out.println(p);//2
		System.out.println(v);//1
		//& 与 && 的区别在于:&两边都执行 &&如果前者为假 后者不执行
		// || 前者为真 则后者不执行 

		//位运算: & | ^ >> <<
		int r=10;
		int t=6;
		System.out.println(r&t);//2
		/*
		1010
		0110
		0010
		*/
		System.out.println(r|t);
		/*
		1010
		0110
		1110
		*/
		System.out.println(r^t);
		/*
		1010
		0110
		1100
		*/
		System.out.println(t>>2);//t/2^2
		//0110->0001
		System.out.println(t<<4);//t*2^4
		//0110->0110 0000
		//0001->0100
		
	}
}

2.15 三元运算符的基本用法

  • 数据类型 变量名=布尔表达式?值1:值2;

2.16 输入和输出功能

  • Scanner scanner=new Scanner(System.in);
  • print()
  • println()
  • printf()
class Test3{
	public static void main(String[] args){
		int a=3;
		int b=7;
		int c=a+b;
		System.out.println(c);
		int d=10;
		double e=10;
		double f=10.1;
		System.out.println(c==d);
		System.out.println(e==d);
		//Intger Double
		System.out.println(d==f);//d->double
		int i='c';//'c'->int
		byte j=24;
		i=j;//j->int
		//i=f;
		System.out.println(i);
		System.out.println('a'==f);
		//字符串与别的数据类型相加 + 是连接符
		String s="123";
		System.out.println(s+1);//"123"+1->"1231"
		//二元运算符 '-' 的操作数类型错误
		//System.out.println(s-1);
		System.out.println(1+2+3+s+(1+2+3));
		int age=20;
		int money=200;
		//"一个20岁的男生手里有200块钱"
		System.out.println("一个"+age+"岁的男生手里有"+money+"块钱");
		System.out.println('a'+10+3.14);
		byte b1=2;
		char c1='c';
		System.out.println(b1+c1+"!!");//b1+c1=int
		short s1=3;
		int i1=4;
		long l1=5;
		System.out.println(b1+s1);//short
		System.out.println(b1+s1+i1);//int
		System.out.println(b1+s1+i1+l1);//long
		float f1=3.0F;
		System.out.println(b1+s1+i1+l1+f1);//float
		double d1=3.14;
		System.out.println(b1+s1+i1+l1+f1+d1);//double
		boolean flag=true;//false;
		//二元运算符 '+' 的操作数类型错误
		System.out.println(true&&true);//只能逻辑运算
		//三元运算符:数据类型 变量名=布尔表达式?值1:值2;
		char c=97>98?97:98;
		System.out.println(c);
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_43498251/article/details/86557958