Java学习笔记Day02

Java学习笔记Day02

一、细化Hello程序

1.详解代码

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

	//主方法
	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 可以省略,但是用public修饰的类名必须和文件名一致,在一个文件中只能最多有一个public修饰的类。
  2. public static void main(String[] args) 这行除了args这个形参名字可以改,其他都不能改,改了要么编译不通过,要么是不能运行。
  3. Java是一门大小写敏感的语言,且所有的字符都是英文的。
  4. 括号都是成双成对的。
  5. 方法里的代码都是从上往下执行-顺序执行。
  6. 方法中的代码又叫做执行语句,执行语句用分号结束。
  7. 代码编译的是这个文件,不是文件里某一个类。

二、Java编码规范

1.书写格式

1.灵活使用tab键缩进,让代码具有层次感,提高代码的可读性

​ 类 > 方法 > 执行语句

2.驼峰命名法分为大驼峰和小驼峰

​ 小驼峰命名法: 第一个单次首字母小写,后面单次首字母大写 ps: myName

​ 大驼峰命名法:也叫做帕斯卡(pascal)命名法,所有单词首字母大写 ps:class HelloWorld

​ 类名使用大驼峰命名法

2.代码注释

含义:解释一段代码的信息

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

编译的过程:Hello.java -> Hello.class
反编译的过程:Hello.class -> Hello.java
注意:注释只在编程阶段才有效,不会随着编译而编译到class文件中

注释的作用:

1.拿来注释代码的复杂逻辑实现

2.调试的时候拿来屏蔽代码

三、path的作用

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

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

2.环境变量为什么要配置JAVA_HOME?
主要是应为很多开源软件都需要依赖到这个变量,用于寻找机器上的 Java环境,比如:Tomcat,Maven

四、Java的跨平台特性

1.JDK,JRE,JVM关系
JDK,JRE,JVM关系
2.跨平台特性
跨平台特性

五、Java的体系划分

JavaSE – J2SE – 核心版本(提供了基本语法、面向对象、集合、多线程…)
JavaEE – J2EE – 企业版本(做后台)
JavaME – J2ME – 微型版本(被淘汰,做前端)

六、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的正式版

2022年,java19发布。

七、什么是IDE

含义:编码环境,编写代码的软件
记事本 --> notepad++ --> eclipse --> idea

八、编码问题

乱码出现的原因:编码和解码不是使用的同一编码格式
解决方案:两个端口设置一样的编码格式

解决1:

javac -encoding UTF-8 Hello.java

以UTF-8的编码格式去编译Hello.java
注意:不推荐,太麻烦

解决2:

在Notepad++中 --> 设置 --> 首选项 --> 新建 --> ANSI

注意:设置成功后,把java文件删除后,新建才能生效

九、关键字

含义:Java给我们提前定义好的具有特殊意义的单词
特点:
1.全小写
2.在java环境下会高亮显示
经验:一共有50个关键字+3个字面常量,不用记关键字,后续会一个一个的接触
ps:public、class、static、void、byte、short、int、long、float、double、char、boolean、true、false…

十、标识符

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

组成:数字、大小写字母、$(货币符号)、_(下划线)、中文

public class 标识符{
    
    public static void 标识符(String[] 标识符){
        int 标识符 = 100;
    }
}

注意事项:

  1. 不能以数字开头
  2. 区分大小写
  3. 在同一个作用域下面不能同名,所谓作用域就是{ }
  4. 不能使用除了$和_以外的特殊符号
  5. 不能使用java的关键字和字面常量(true、false、null)
  6. 不要使用中文(考虑编码的问题)
    辨析:
java  c#  string   my%name $_abc  name3&  main (watch tv) 3name
 注意:java  string  main   可以作为标识符

十一、变量

含义:在程序运行过程中值可以变的量
定义:内存中的一段空间
语法规则:数据类型 变量名/标识符 [= 值]; //[ ]代表可赋值,也可以不赋值。
理解:变量类似于容器(装数据),该容器只能存储一个值

使用三步骤:
声明变量,赋值,使用
变量三要素:
​数据类型 变量名 变量值

​数据类型:决定这个变量在内存中空间的大小

​变量名:是变量地址的映射

int a = 100;
在内存中开辟一个32位的空间,这个空间的地址用a来代表,在这个空间用二进制存上100这个值。
    64+32+4 =1100100
    0000000000000000000000000110010032

十二、变量使用的注意事项

  1. 在同一个作用域中,变量名不能重复声明
  2. 变量没有初始化就不能使用

十三、Java基本数据类型

Java基本数据类型

1.数字字面量:程序中的数字
	整数数字:默认int类型
	小数数字∶默认double类型
    
2.char类型的值必须使用单引号括起来
3.boolean类型的值必须是truefalse
	true -真的、对的
	false-假的、错的
    
4.计算机存储的最小单位:字节
    
5.1个字节=8bit()--- 0000,0000
    
6.二进制中最高位为符号位,0-正数,1为负数
    
7.一个字节的取值范围:-128~127
    
8.byte的取值范围: 8-128~127
  short16-32768 ~ 32767
  int的取值范围: 32-21亿~21亿  
      -2147483648 ~ 2147483647
  long:64char的取值范围:16位无符号数  0~65535
  float:32double649.boolean8位还是32?
	网上有两种说法
	8位:
	基于jol工具查看的内存地址大小看到boolean大小是2个字节。
	32位:
	基于JVM虚拟机规范中说到在jvm中没有描述ture和false的命令,使用int去代替,int0表示false1表示true
      
10.取值范围: byte<short<int<long<float<double
	32位的float的取值范围比64位的long大。

十四、基本数据类型的转型

1.自动转型

含义:取值范围小 转 取值范围大

2.强制转型

含义:取值范围大 转 取值范围小

这种需要强转 , 比如
long a = 10 ;
int b = (int) a;
通过 (int)可以强制转型 , 但是这样会丢失精度 , 比如a如果超过了b的范围 , 那么强转成int型, 只会等于int的最大值

又如 : int a = ( int ) 8.8 ;

3.特殊点
public class TestType{
	public static void main(String[] args) {		
	    byte a128 = (byte)128;//数据类型强制转换---大类型往小类型转
		System.out.println(a128);    //  -128
		//整型(int)在内存中占32位,字节类型(byte)在内存中占8位,所以,经过强制类型转换,把int类型转化为byte类型,byte只保存了int类型的低8位,其它位都舍弃,有符号类型,最高位都是符号位, 1表示负数, 0表示正数,即-0,也是-128;
		byte a129 = (byte)129;
		System.out.println(a129);    //  -127   129二进制表示10000001  转为byte后成补码,通过补码计算,反码+1 = 补码  原码=反码除符号位取反,所以最后为-127
		
		byte a_128 = (byte)-128;
		System.out.println(a_128);   //  -128
		
		byte a_129 = (byte)-129;
		System.out.println(a_129);	 //   127
		
		long num1 = 2147483647;
		System.out.println(num1);
		long num2 = 2147483648L; //java不指定整数的类型就是一个int类型,需要转类型,但是当数值超过int的取值范围,则需要在数字后加L,即在num2里面存一个long类型的数据
		System.out.println(num2);
		long num3 = 2147483647+1;//-2147483648  这个是011111111111111111111111111111111+1,即1000000000000000000000000000000000就等于-2147483648
		//要想等到正常的值,则需要在任意一个数值后加L
		System.out.println(num3);
		long num4 = 2147483647L+1;
		System.out.println(num4);
		
		 int  a = ( int )8.8 ;
		 System.out.println(a);//8
		 
		 float f1 = 8;
		 System.out.println(f1);//8.0
		 
		 //float f1 = 8.0; // 错误: 不兼容的类型: 小数默认double类型,从double转换到float可能会有损失
		 //float f2 =(float)8.0;
		 float f2 =8.0f;  //两种写法
		 System.out.println(f2);//8.0
		 
		 double d =0.01;
		 double d2 =0.09;
		 System.out.println(d);//0.01
		 System.out.println(d2);//0.09
		 System.out.println(d+d2);//0.09999999999999999 小数做运算会丢失精度
		 
		 
		 //byte num = 97;
		 //char ch = num;//错误: 不兼容的类型: 从byte转换到char可能会有损失  需要强转
		 //char ch = (char)num;
		 //System.out.println(ch);
		 byte num = -97;
		 char ch = (char)num;
		 System.out.println((int)ch);//65439
		 
		
		 
		//转义字符
		//  /n换行符  /t:制表符  /" :"
		//System.out.println('nn');//错误: 未结束的字符文字
		System.out.print('\n');
		System.out.println((int)'\n'); //10
	}
}
	

十五、Scanner的使用

Java给我们提供的类,该类可以在cmd输入数据

使用步骤:

1.导包–导入Scanner类

import java.util.Scanner;

2.定义扫描仪–Scanner变量

3.提示输入(非必须的)

4.接收输入

5.使用接收到的值

import java.util.Scanner;//导包
public class Test06{
	/**
		知识点:Scanner类的使用
		含义:Java给我们提供的类,该类可以在cmd输入数据
	*/
	public static void main(String[] args){		
		//定义扫描仪,创建Scanner类的对象
		Scanner scan = new Scanner(System.in);
		//提示用户输入int
		System.out.println("请输入int数据:");
        //接收输入--要定义一个变量去接收输入的值
		int i = scan.nextInt();
		//输入double
		System.out.println("请输入double数据:");
		double d = scan.nextDouble();
		//输入字符串
		System.out.println("请输入字符串数据:");
		String str = scan.next();
        char ch =scan.next().charAt(0);
		System.out.println(i);
		System.out.println(d);
		System.out.println(str);
        System.out.println(ch);
        
		 //查询自己名字对应的编码
		 Scanner scan = new Scanner(System.in);
		  System.out.println("请输入你的姓:");
		 char name = scan.next().charAt(0);
		  System.out.println((int)name);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值