java学习

本博文为学习高淇老师java视频的笔记。


1.不仅要学习java的语法,更要深入到内存结构、分析JDK源代码。

高手都拥有好的习惯,打好基础是关键。


2.所有代码现场手敲,真实展现代码编写过程。


3.第一季98集,主要讲解java编程基础,通过游戏项目提高编程能力。打基础的,比较重要。


4.编程语言怎么学?

找准一门语言,精通它。。。各种语言之间都是有渊源的。。。必须精通。。。用高手的标准要求自己,养成高手的习惯。


5.计算机语言发展历史

如产品,向着人更容易使用的方向发展,功能越来越强大。

第一代,机器语言。由01组成的字符串,直接给机器用。人使用不友好。

第二代,汇编语言。用单词代替01。

摩尔定律:每隔18个月,电脑性能翻一番。晶体管每隔一年半,工艺提升一倍。


第三代,高级语言,包括面向过程和面向对象。面向过程的语言有:C、Fortran、cobol、pascal、ada。面向对象:C++、java、C#。

java有一个别名叫C++-。java的核心优势在于跨平台。C#是微软山寨java的产品。


6.SUN公司

美国:SUN(stanford university network)公司。

中国大陆:太阳计算机系统(系统)有限公司。

台湾:升阳电脑公司。


java为什么被发明?

green项目。创造像电视盒这样的消费电子产品。要求:语言本身是中立的,也是跨平台的。james gosling发明了java语言。


java为什么能够流行?

*互联网的爆发式发展。

*互联网的电脑硬件不同,软件环境差异较大,需要一个跨平台的语言。


2011年,推出javase7.0。企业一般用的最多的还是2004年推出的J2SE5.0(1.5.0) Tiger老虎; 和J2SE6.0(1.6.0)Mustang野马。企业一般不用最新版的,用最稳定的。


不管以后流行哪种新的语言,新的东西必定是在旧的基础上创造出来的,所以精通了旧的,学习新的就不会有困难。


7.JAVA各版本和体系架构

*J2EE(JAVAEE)

Java 2 enterprise edition;

定位在服务器端的应用。

J2SE(JAVASE)

*java 2 standard edition;

定位在个人计算机上的应用。

*J2ME(JAVAME)

java 2 micro edition;

定位在消费电子产品的应用上。


学习java的时候用JAVASE。


003. JDK和JRE和JVM的区别_JDK的下载安装_环境变量配置_测试安装成功

3.1 JDK&JRE&JVM

**JDK

Java development kit  java开发工具包

**JRE

Java runtime environment  java运行时环境

**JVM

java virtual machine  java虚拟机


三者的关系:JDK包含JRE,JRE包含JVM。jvm用来执行字节码;JRE用来加载外部的环境;jdk提供了很多开发工具和api,有助于写、调试程序。


3.2 JVM(JAVA VIRTUAL MACHINE)

JAVA的核心优势是跨平台,同一个java程序可以在不同的平台上运行,sun公司为每一个平台都写另一个java虚拟机,所以程序员可以只关注java程序本身,而不必关注平台的差异。java程序被送到一个平台之后,首先就是经由该平台上的jvm处理。

*JVM是一种规范。就是一个虚拟的用于执行bytecodes字节码的计算机。

*可以使用软件来实现。IBM,SUN,BEA等。也可以自己写一个JVM。

*可以使用硬件来实现。比如sun/intel公司正在研发的java芯片。


3.3 JVM和java跨平台特性



3.4 JAVA开发环境配置

**下载(JDK):

Download J2SDK(Java 2 Software Development Kit) from http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

**安装:

run the executable(跟普通软件安装一样,点击下一步就ok)。

**环境变量配置

JAVA_HOME : C:\Program Files\Java\jdk1.7.0_45

path(执行dos命令,系统会在path指定的路径中寻找该命令对应的可执行文件)

  - 将"%JAVA_HOME%/bin"增加到path中;多个目录用分号隔开。

classpath---JDK5.0以上版本,可以不对其进行配置。

**开发DOS窗口:

   --运行→cmd

**输入命令: java -version

**出现如下图所示,则安装成功:


**疑问:

 --配置完java环境变量后,最好重启DOS窗口。重启后新配置的环境变量才生效。


004_第一个程序_HelloWorld

4.1 第一个java程序

**代码编写:(程序员编辑代码并保存在磁盘上)

public class Welcome{
	public static void main(String[] args){
		System.out.println("Helloword!大家好");
	}
}
--保存为Welcome.java

**编译阶段(编译器创建class字节码文件)

--进入java文件所在目录,执行命令:javac Welcome.java

**执行阶段:

--进入java文件所在目录,执行命令: java Welcom

005_helloworld深化_文本编辑器的使用_注释

5.1  常用java开发工具

**文本编辑器(选择任意一个)

- UltraEdit

- Editplus

- notepad++

**集成开发环境(IDE: integrated development environment)

- JBuilder (http://www.borland.com)(基本淘汰)

- Eclipse(http://www.eclipse.org)****(重点)

- NetBeans (http://java.sun.com)


5.2  第一个java程序的总结和提升

**Java对大小写敏感,如果出现了大小写拼写错误,程序无法运行。

**关键字class表明Java程序中的全部内容都包含在类中,Java是一种面向对象的语言。

**main方法是Java应用程序的入口方法,它有固定的书写格式:

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

**在Java中,用花括号划分程序的各个部分,任何方法的代码都必须以“{”开始,以“}”结束,由于编译器忽略空格,所以花括号风格不受限制。

**Java一个语句可以跨多行,每个语句必须以分号结束,回车不是语句的结束标志。

**一个源文件可以有多个class

**一个源文件中至多只能有一个public的类声明,其他类的个数不限,如果源文件中包含一个public类源文件名必须和它中定义的public的类名相同,且以“java”为扩展名。


5.3  编程风格

**注意缩进!

-- 一定要有缩进。缩进就像人得体的衣着一样。

**成对编程!

--括号、引号都应该写完后,再往里面加内容。

**见名知意!

--最基本的要求!


5.4 JAVA注释

**注释就是程序员为读者作的说明,是提高程序可读性的一种手段。

**注释不会出现在字节码文件中。即JAVA编译器编译时会跳过注释语句。

//单行注释:注释内容从//到本行结尾。

/* */多行注释。注意 /* */注释不能嵌套。


5.5  常用dos命令

cd  : 进入一个目录。(change directory)

cd...   : 如cd mycode

dir:  查看目录下的文件

上下键: 查找敲过的命令。

Tab键: 命令自动补齐。


006_标识符_unicode和GBK_各种字符集的关系

6.1 标示符Identifier

**作用: 给变量、类和方法命名。

**Java标示符有如下命名规则:

--标识符必须以字母、下划线、美元符$开头。

--标示符其他部分可以是字母、下划线“_”、美元符“$”和数字的任意组合。

--Java标识符大小写敏感,且长度无限制。

--不可以是Java的关键字。

**注:

--Java不采用通常语言使用的ASII字符集,而是用unicode这样的标准的国际字符集。因此,这里的字母的含义:英文、汉字等等。(不建议大家使用汉字来定义标识符!)

**不合法的标识符:

    int 1a=3;    //不能用数字开头

    int a#=3;    //不能包含#这样的特殊字符

    int int=3;    //不能使用关键字


java可以用中文命名,因为java内部采用了Unicode字符集,Unicode字符集是2个字节表示一个字符。

1个字节占8位,共可以表示2^8=256个状态。2个字节占16位,共可以表示2^16=65536个状态。足以表示目前世界上的通用文字语言了。


6.2 关键字/保留字

**Java关键字Java语言保留供内部使用的,如class用于定义类。关键字也可以成为保留字,它们的意思是一样的。

**注意:不要可以去背! 后面会慢慢介绍每个关键字的用法



6.3  字符集简介


**ISO8859-1 : 西欧字符

**BIG5 : 台湾的大五码,表示繁体汉字

**GB2312 : 大陆使用最早、最广的简体中文字符集

**GBK : GB2312的扩展,可以表示繁体中文

**GB18030 : 最新GBK的扩展,中国所有非手持/嵌入式计算机系统的强制实施标准,可以表示汉字、维吾尔文、藏文等中华民族字符

**Unicode : 国际通用字符集。UTF-8字符集用1个字节表示西欧字符、2个字节表示英文字符、3个字节表示汉字。


007_整数类型_进制转换_编程中的L问题

7.1  JAVA基本数据类型

Java是一种强类型语言,每个变量都必须声明其类型。

JAVA基本数据类型有8种,整数类型就占了4种。


7.2 整型变量

** Java语言整型常数的三种表示形式:

十进制整数,如: 99, -500, 0

八进制整数,要求以0开头,如015

十六进制数,要求以0x或0X开头,如: 0x15

**Java语言的整型常数默认为int型,声明long型常量可以加‘l’或‘L’(建议使用大写,小写容易误认为数字1),如:

           long   a = 55555555;           //不出错,在int表示的范围内(21亿内)。

           long   b =55555555555;     //不加出错,已经超过int表示的范围。


public class TestDataType{

	public static void main(String[] args){
		int a=10;
		int a2=010;
		int a3=0xf;
	//	byte b=200;
	//	System.out.println(b);
		System.out.println(a);
		System.out.println(a2);
		System.out.println(a3);
		System.out.println(Integer.toBinaryString(a));
		System.out.println(Integer.toOctalString(a));
		System.out.println(Integer.toHexString(a));
		
		int a5=10;
		long a6=200;
		byte b2=100;	//如果数据的大小没有超过byte/short/char的表示范围,则可以自动转型	
		
		long a7=11123567886L;
		long l=3;
		long l2=l+3;	//L问题
		
	}

}


几点注释:

**如果数字连long型都不够用,那么还有一种BigInteger类型的,可以表示超大整型的。

**8进制以0开头,8进制中的8个数分别表示为:0,1,2,3,4,5,6,7。所以,010就表示8(逢八进一)。

**16进制以0x或0X开头,16进制中的16个数分别表示为:0,1,2,3,4,5,6,7,8,9,a,b、c、d、e,f。所以,0x10就表示16。

008_浮点数_浮点数误差问题

8.1  浮点型

**float类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足要求。

**double表示这种类型的数值精度是float类型的两倍,又被称作双精度,绝大部分应用程序都采用double类型。

**Java浮点类型常量有两种表示形式

  -- 十进制形式,例如:

      3.14            314.0           0.314

  -- 科学记数形式,如:

      314e2         314E2          314E-2

**浮点数值默认为double类型。要将其变为float类型,需要在后面增加F/f,如: 3.14F

**使用总结:

 --默认是double

 --浮点数存在舍入误差,很多数字精确表示。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。

 --最好避免在比较中使用浮点数。


//测试浮点数
public class TestFloatType{

	public static void main(String[] args){
		//double d=3.14;	//浮点数常量默认类型是double。
		//float f=6.28F;
		double d2=3.14e-2;	//采用科学计数法的写法
		System.out.println(d2);
		
		float f=0.1f;
		double d=1.0/10;
		System.out.println(f==d);	//false
	}

}

**int类型与float类型的比较:

int类型也是4个字节,表示的范围为: -2^31 ~ 2^31-1   。而同样是4个字节的float类型却可以表示-3.403E38 ~ 3.403E38之间的数,范围远大于int的。为啥还要说float类型有舍入误差?因为int类型可以精确地表示 -2^31 ~ 2^31-1之间的所有的、确切的整数,无一遗漏。而float类型终究之用4个字节,是有限的,但-3.403E38 ~ 3.403E38之间的小数却是无限的,显然float类型是装不下的,这就必然会导致舍入误差。同样的道理,double类型也存在舍入误差,尽管double类型可以表示的范围比float远大。


009_char_字符串入门_boolean

9.1  字符型(2个字节)

**单引号用来表示字符常量。例如‘A’是一个字符,她与“A”是不同的,“A”表示含有一个字符的字符串。

**char类型用来表示在Unicode编码表中的字符。

**Unicode编码被设计用来处理各种语言的所有文字,它占2个字节,可允许65536个字符;

     java语言中还允许使用转义字符‘\’来将其后的字符转变为其他的含义:

              char c2='\n';     //代表换行符

**char是在0-65535范围,运算时直接当做整数来运算。

**可以把0-65535之间的整数直接转型为char


9.2   boolean类型(一位,不是一个字节)

**boolean类型有两个值,true和false

**boolean类型用来判断逻辑条件,一般用于程序控制

**实践:

  --请不要这样写: if(is ==true && done == false),只有新手才那么写。

     对于任何程序员if(whether && !done)都不难理解吧。所以去掉所有的==false和==true。

//测试char
public class TestCharType{

	public static void main(String[] args){
	/*	
		char c1='a';
		char c2='尚';	//unicode	2:0-65535
		char c3='\n';
	//	System.out.println(c1);
	//	System.out.println(c2);	//换行
		System.out.print(c1);
		System.out.print(c3);	//不换行
		System.out.print(c2);
	*/	
	/*
		char c4='a';
		int i=c4+2;		//a对应的ascii码是95,所以i的值为97
		char c5=(char)i;	//强制转型
		System.out.println(c5);
		
		//循环打印
		for(int j=0;j<26;j++){
			char temp=(char)(c4+j);
			System.out.print(temp);		
		}
		
		//java里面的字符串,是定义成:String类了。
		String str="abcdefghijklmnopqrstuvwxyz";
		System.out.println("\n"+str);
	*/
	
		boolean b=false;	//false
		if(b){
			System.out.println("true");
		}
	}

}


























CCF大数据与计算智能大赛-面向电信行业存量用户的智能套餐个性化匹配模型联通赛-复赛第二名-【多分类,embedding】.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值