02Hello程序的扩展、Java编码规范、Path的作用、Java、编写代码的工具、编码问题、关键字、标识符、变量、基本数据类型及转型

Day02

一、Hello程序的扩展

1.代码详解

/**
	编写人:程序奇男子
	编写时间:2023.12.17
	代码版本:1.0
*/

//公有的类,叫做Hello
public class Hello{

	//公有的静态的无返回值的方法,叫做main(这种固定写法的方法叫做主方法)
	public static void main(String[] args){
		
		//打印语句("内容");
		System.out.println("HelloWorld...1");
		System.out.println("HelloWorld...2");
		System.out.println("HelloWorld...3");

	}
}
/*
	public - 公有的	class - 类		Hello - 类名
	static - 静态的	void - 无返回值的	main - 方法名
	String - 字符串  ps:"程序奇男子"
	String[] - 字符串数组   ps:["程序奇男子","遥遥领先","绝绝子","你真的是饿了"]
	args:数组名
*/

2.代码细节

  1. public修饰的类名必须和文件名一致
  2. Java是一门大小写敏感的语言
  3. 括号都是成双成对的
  4. 方法里的代码都是从上往下执行-顺序执行
  5. 方法中的代码又叫做执行语句,执行语句用分号结束

二、Java编码规范

1.书写格式

经验:灵活使用tab键,提高代码的可读性

2.代码注释

理解:给程序员解释代码信息

注释描述
//注释内容单行注释
/*注释内容*/多行注释
/**注释内容*/文档注释

3.代码注释

编译的过程:.java -> .class

反编译的过程:.class -> .java

注意:

  1. xjad可以实现反编译的功能
  2. 注释不会随着代码的编译而编译到.class文件中

三、Path的作用

%JAVA_HOME%/bin --> javac.exe 和 java.exe

在path中配置了某个文件夹,代表在其他任何文件夹里都可以打开配置的文件夹中的文件
Path

四、Java的跨平台特性

Java跨平台特性

五、Java的体系划分

JavaSE – J2SE – 核心版本

JavaEE – J2EE – 企业级版本(服务端)

JavaME – J2ME – 微型版本(移动端) - 过时

Android程序员:JavaSE、AndroidSDK

后端程序员:JavaSE、JavaEE、框架、微服务

六、Java发展历史

前雇主:sun(Stanford University Network)—2009年74亿美金卖给oracle公司

Java之父:詹姆斯·高斯林 (James Gosling)

版本变更

1995年5月23日,Java语言诞生;

1996年1月,第一个JDK-JDK1.0诞生;

1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入JAVA技术;

1996年9月,约8.3万个网页应用了JAVA技术来制作;

1997年2月18日,JDK1.1发布;

1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之纪录;

1997年9月,JavaDeveloperConnection社区成员超过十万;

1998年2月,JDK1.1被下载超过2,000,000次;

1998年12月8日,JAVA2企业平台J2EE发布;

1999年6月,SUN公司发布Java的三个版本:标准版、企业版和微型版;

2000年5月8日,JDK1.3发布;

2000年5月29日,JDK1.4发布;

2001年6月5日,NOKIA宣布,到2003年将出售1亿部支持Java的手机;

2001年9月24日,J2EE1.3发布;

2002年2月26日,J2SE1.4发布,自此Java的计算能力有了大幅提升;

2004年9月30日18:00PM,J2SE1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本 的重要性,J2SE1.5更名为Java SE 5.0;

2005年6月,JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名,以取 消其中的数字“2”:J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME;

2006年12月,SUN公司发布JRE6.0;

2009年4月7日Google App Engine开始支持Java;

2009年04月20日,甲骨文74亿美元收购Sun。取得Java的版权;

2010年11月,由于甲骨文对于Java社区的不友善,因此Apache扬言将退出JCP;

2011年7月28日,甲骨文发布Java 7.0的正式版;

2014年3月19日,甲骨文公司发布Java 8.0的正式版

七、notepa++

理解:编码环境,编写代码的工具
学习使用过程:记事本 -> notepad++ -> eclipse -> IDEA

八、编码问题

出现原因:编写和解码不一致

解决思路:把编码格式调成一致

解决方案一:javac -encoding UTF-8 Test01.java

理解:以UTF-8的编码格式编译Test01.java

缺点:每次编译时都必须写 -encoding UTF-8 ,特别麻烦

解决方案二:

设置Notepad++的编码格式(设置->首选项->新建->ANSI)

注意:必须把之前的java文件删除后,再次新建才能生效!!!

补充:

-encoding UTF-8{一个英文字符-1个字节 一个数字字符-1个字节 一个中文字符-3个字节}

GBK{一个英文字符-1个字节 一个数字字符-1个字节 一个中文字符-2个字节}

九、关键字

理解:Java给我们提供的具有特殊意义的单词

十、标识符

理解:给类、接口、方法、变量取名字时使用到的字符序列

public class 类名-标识符{
    public static void 方法名-标识符(String[] 变量名-标识符){
        
    }
}

组成部分:英文大小写字母、数字、$、_、中文

注意:

  1. 区分大小写
  2. 不能以数字开头
  3. 不能使用除了$、_以外的特殊符号
  4. 不能用Java的关键字
  5. 不要使用中文(考虑到编码格式)

十一、变量

概念:在程序执行过程中,可以发生改变的量

理解:变量就是存储单个数据的容器

变量的声明:数据类型 变量名 [= 值];

注意:

  1. =为赋值号,将赋值号右边的值赋值给左边的变量
  2. []括起来的内容可写可不写,不违反变量声明的语法格式
  3. 在同一个作用域中,变量名不能重复
  4. 变量没有初始化就不能使用
public class Test01{

/**		知识点:变量的使用
		
		需求:模拟年龄的变化
*/

	public static void main(String[] args){
		
		//声明int类型的变量age,并把18赋值给该变量
		int age = 18;
		//打印变量里的值
		System.out.println(age);
		
		//把19赋值给变量age
		age = 19;
		//打印变量里的值
		System.out.println(age);
	}
}
public class Test02{

/**		知识点:变量的使用
		
		需求:模拟年龄的变化
*/
	public static void main(String[] args){
		
		//声明int类型的变量age
		int age;
		//将18赋值给变量age
		age = 18;
		//打印变量age里的值
		System.out.println(age);
		
		//将19赋值给变量age
		age = 19;
		//打印变量age里的值
		System.out.println(age);
	}
}

十二、基本数据类型

1.使用

public class Test03{
/**
		知识点:基本数据类型的使用
		
		数字字面量:程序中出现的数字
			整数数字默认int类型
			小数数字默认double类型
*/
	public static void main(String[] args){
		
		//整数类型 -- byte字节型 -- 1字节
		byte b = 10;
		System.out.println(b);
		b = 20;
		System.out.println(b);

		//整数类型 -- short短整型 -- 2字节
		short s = 30;
		System.out.println(s);
		s = 40;
		System.out.println(s);
		
		//整数类型 -- int整形 -- 4字节
		int i = 50;
		System.out.println(i);
		i = 60;
		System.out.println(i);
		 
		//整数类型 -- long长整型 -- 8字节
		long l = 70;
		System.out.println(l);
		l = 80;
		System.out.println(l);
		
		//浮点类型 -- float单精度浮点型 -- 4字节
		float f = 111.111f;
		System.out.println(f);
		f = 222.222f;
		System.out.println(f);
		
		//浮点类型 -- double双精度浮点型 -- 8字节
		double d = 333.333;
		System.out.println(d);
		d = 444.444;
		System.out.println(d);
		
		//字符类型 - char - 2字节
		char c = 'a';
		System.out.println(c);
		c = '我';
		System.out.println(c);
		
		//布尔类型 - boolean - 4字节
		boolean bool = true;//对的、真的
		System.out.println(bool);
		bool = false;//错的、假的
		System.out.println(bool);
		
	}
}

2.深入

Java数据类型

注意事项:

  1. 数字字面量: 程序中出现的数字
    整数数字默认int类型
    小数数字默认double类型
    2. float类型的值必须使用f结尾 (float f = 111.111f;)
    3. char类型的值必须使用单引号括起来
  2. boolean类型的值只能是true或falsetrue - 对的、真的false - 错的、假的
  3. byte的取值范围: -128~127
  4. 数值类型的取值范围: byte<short<int<long<float<double
  5. char的取值范围: 0~65535
  6. boolean占4个字节,Java虚拟机规范中指出JVM底层没有表述boolean值的指令,底层是使用int类型表述boolean值

3.基本数据类型的转型

取值范围:byte<short<int<long<float<double

自动转型 - 向上转型:取值范围小 转 取值范围大

强制转型 - 向下转型:取值范围大 转 取值范围小

特殊点

public class Test04{
/*
		知识点:基本数据类型的转型 -- 自动转型/向上转型
		
		取值范围:byte<short<int<long<float<double
		
		自动转型 - 向上转型:取值范围小 转 取值范围大
		
*/
	public static void main(String[] args){
		
		byte b = 10;
		short s = b;
		int i = s;
		long l = i;
		float f = l;
		double d = f;
		System.out.println(d);
		
/*		//直接将byte类型的数据转型成double类型
		byte b = 10;
		double d = b;
		System.out.println(d);*/
	}
}
public class Test05{
/*
		知识点:基本数据类型的转型 -- 强制转型/向下转型
		
		取值范围:byte<short<int<long<float<double
		
		强制转型 - 向下转型:取值范围大 转 取值范围小
		
*/

	public static void main(String[] args){
		
		double d = 123.123;
		float f = (float)d;//1.将double类型的数据强制转型成float类型的数据 2.将转型后的数据赋值给float类型的变量f
		long l = (long)f;
		int i = (int)l;
		short s = (short)i;
		byte b = (byte)s;
		System.out.println(b);	

/*		//直接将double类型的数据强转为byte类型
		double d = 123.123;
		byte b = (byte)d;
		System.out.println(b);*/
		
	}
}

		//案例一:
		//注意:强制转型是从最高位开始舍弃
			byte b1 = 1;//1为int类型的数字字面量,但是1在byte类型的取值范围内,就直接赋值
			//byte b2 = 128;//128为int类型的数字字面量,但是128不在byte类型的取值范围内,就会报错		
			
			//128 - int:0000,0000,0000,0000,0000,0000,1000,0000int类型4字节(一个字节8位)
			//   (byte):1000,0000
			byte b2 = (byte)128;
			System.out.println(b1);//1
			System.out.println(b2);//-128
			
/*		//案例二:
			int i = 12345678901;//12345678901为int类型的数字字面量,但是该数字超过了int类型的取值范围,所以会报错
	
		//案例三:
			long l1 = 12345678901;//12345678901为int类型的数字字面量,但是该数字超过了int类型的取值范围,所以会报错*/
			long l2 = 12345678901L;//12345678901L为long类型的数字字面量,该数字没有超过long类型的取值范围,所以不会报错
	
		//案例四:
			float f1 = 1;//int -> float ,自动转型
			//float f2 = 1.0;//double -> float ,强制转型
			//解决方案一:1.0为double类型,底层会开辟8字节的空间,然后再强制转型成float(4字节的空间),可能会损失精度,并且空间浪费,效率较低
			float f2 = (float)1.0;
/*			//解决方案二:JVM直接认为1.0就是float类型去开辟4个字节的空间
			float f2 = 1.0f;*/
			
			System.out.println(f1);
			System.out.println(f2);
			
		//案例五:
			char c = 'a';//Unicode - 97
			int j = c;
			System.out.println(j);


  • 13
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值