Java学习笔记第1天——什么是java、Java的分隔符、标识符、关键字的使用、注释的使用、数据类型、运算符的使用

前言

学习Java的helloworld、编译及运行,Java程序的组织形式、classpath,注释的使用、基本数据类型,ASCII码、UNIcode、类型自动提升、强制类型转换、运算符的使用,


一、JAVA是什么?

Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用的两个特征

1、JAVA语言的三大体系

  • JavaSE  桌面应用程序、安卓程序
  • JavaEE  互联网企业应用、企业级应用【web】
  • JavaME  嵌入式系统

2、JAVA语言的特点

  • 简单性 :摒弃了C++中多继承、指针的概念,并且有了一套垃圾回收的机制

  • 面向对象 :  

    举例:警察抓小偷

    面向过程:抓小偷(警察,小偷)

    面向对象:警察.抓小偷(小偷)

  • 分布式:     应用网络编程,可以将单体程序拆分为多个微服务,从而将多个服务部署在不同的服务器中

  • 健壮性:  强类型语言、异常处理机制、垃圾回收机制

  • 安全性:  提供一套安全处理机制

  • 平台独立与可移植性(编译性语言):  一次编译,多次运行

  • 多线程

  • 动态性

3、JAVA的安装与环境配置

从甲骨文官网下载1.8版本的JDK

--执行安装程序(全部默认下一步即可)

--默认安装在C:\Program Files\Java  噢 我改了安装路径

--JDK (Java程序的开发工具)

--JRE (Java程序的运行环境)

--配置Java的环境变量:

--打开高级系统设置

--在系统变量中配置JAVA_HOME(新建)

--在path中指定jdk的bin路径(新建)

cmd 查询

4.JDK,JRE和JVM关系

  1. JDK,JRE和JVM关系

JDK(Java Development Kit),Java开发工具包,主要用于开发,在JDK7前,JDK包括JRE

JRE(Java Runtime Environment),Java程序运行的核心环境,包括JVM和一些核心库

JVM(Java Virtual Machine),VM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的,是JRE核心模块。

      2.JDK,JRE和JVM关系

JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

Java虚拟机的主要任务是装载class文件,并执行其中的字节码,不同的Java虚拟机中,执行引擎可能有不同的实现。

5.JAVA的第一个HelloWorld

6.JAVA的程序的编译和运行

1、打开cmd命令行

2、切换当前目录为Java源文件的目录

--注意:如果Java源文件在其他盘符则要先切换到其他盘符,比如:java文件在d盘,则使用d: 切换到d盘

--使用cd切换当前目录

cd C:\Users\liko\Desktop\test

3、编译Java文件,使用javac进行编译(会生成.class文件)

javac Hello.java (javac 文件名)

javac 绝对路径\Hello.java (javac 文件名)

javac -d 存放class的目录 绝对路径\Hello.java (javac 文件名)

4、运行Java程序

java Hello (java 类名)

执行流程

--Hello.java ---> Hello.class--->JVM

CLASSPATH的作用以及配置[目的是告诉虚拟机在哪找class文件] 

7.Java程序的组织形式

        1、以.java作为程序的后缀

        2、当类是被public修饰时,类名和文件名要一致(大小写一致)

        3、如果该Java源文件中没有被public修饰的类时,则类名可以和文件名不一致

        4、一个Java源文件中可以有多个类,在编译的时候会生成多个class文件,但是被public修饰的类只能有一个

//public 是公共的意思【修饰符】 class用于修饰类  hello表示为当前类的类名
//1、类一定要public修饰吗?不一定
//2、但是如果类被public修饰,则类名必须要和文件名一致[大小写都要一致]
//3、能不能在一个java源文件中有多个类?可以
//4、被public修饰的类在同一个java源文件中只能有一个,所有类也可以没有public修饰
//5、运行java程序需要提供main方法
//6、如果类不是被public修饰,则类名需要和文件名一致吗?不需要一致
class hello{
	//提供Java程序的入口 main方法
	public static void main(String[] args){
		//输出语句
		System.out.println("hello world!!!");
	}
}
 class demo{
	
}

8.我的错误

        1、CLASSPATH指的是类的加载路径,而不是Java源文件的路径

        2、容易忽略后缀名

        3、注意在Java中是大小写敏感的

        4、main方法的格式(固定的)

二、Java的分隔符、标识符、关键字的使用

1.分隔符

  1. 圆括号():定义方法时必须还是用圆括号来包含所有的形参声明,调用方法时也必须使用圆括号来传入实际实参值。包含表达式、方法参数列表

  2. 分号(;):语句之间用分号隔开

  3. 花括号{}:包含类体、方法体、代码块

  4. 空格:包含制表符TAB SPACE ENTER等、

  5. 圆点(.):通常作用于类、对象和它的成员(包括成员变量、方法和内部类)之间的分隔符。

2.标识符

  1. 什么是标识符?用于定义变量名、类名、方法名、常量
    1. 规则--1、标识符组成:英文字母、数字、(美元符号)$、(下划线)_

      --2、不能使用数字作为开头

      --3、不能使用其他的特殊字符 @# ……

      --4、不能包含空格0000020000000

      --5、不能和关键字一样

驼峰式命名:

//类名 HelloWorld【首字符、每个单词首字母大小写】

//方法名 helloWorld【首字符小写、每个单词首字母大写】

//变量名 helloWorld【和方法名一致】

//常量 HELLO_WORLD【全大小写,每个单词中间用_分隔】

3.关键字

1.什么是关键字?有特殊功能的描述符(50个关键字,其中有2两个保留字)【全小写】

    多打代码就能记住了,多翻阅手册,排除天赋异禀的人,都是普通人吧。

三、注释的使用

        注释的作用:提高代码的可读性,被注释的代码不会被编译器所编译

1.单行注释

//

Ctrl+/

2.多行注释

/* */

Ctrl+shift+/

3.文档注释:生成API帮助文档

/** */

定义存放目录,目录不包含中文,不能有空格,

--生成api文档的命令

javadoc -d api生成的存放目录 Java源文件

注意:如果要生成作者以及版本信息的话,则需要指定author和version

javadoc -d api生成的存放目录 -author -version Java源文件

注意:如果属性或者方法不是public修饰的,则需要在命令中加上-private参数

/**
	这是一个Demo类,用于测试文档注释
	@author liko
	@version 1.0
*/
public class demo{
	/**
		这个是demo类的test方法
		@deprecated
		@param a 是一个入参a的整型值
		@param b 是一个入参b的整型值
		@return 返回值是a+b的结果,也就是一个整型值
	*/
	public int test(int a,int b){
		System.out.println("这是测试方法");
		return a+b;
	}
	/**
		这个是demo类的test方法
		@throws Exception 当前方法声明了抛出这个Exception异常
		@exception Exception 当前方法抛出这个Exception异常
	*/
	private void exTest() throws Exception{
		System.out.println("这是异常测试方法");
	}
}
 

 四、数据类型

-Java中有两大数据类型:基本数据类型、引用类型

--JAVA是个强类型语言

    1. 所有变量必须先声明后使用
    2. 指令类型的变量只能接受类型与之匹配的值

1.基本数据类型(8种)

1. byte 1个字节 -128~+127,内存里占8位

2.short 2个字节 -32768~+32767,内存里占16位

3.int 4个字节 ,内存里占32位

4.long 8个字节 ,内存里占64位

以上都是整数类型

在java中所有整型数值默认为int类型

PS:

1.如果直接将一个较小整数值(byte或者short类型范围内)赋给一个byte或short变量,系统会自动把这个整数值当成byte或者short类型来处理。

2.如果使用巨大整数值,超出了int的范围,java不会用long,要增加l或者L作为后缀。最好用L

5.float 4个字节

6.double 8个字节

在java中所有浮点型数值默认为double类型

1.相同字节数的浮点类型数据比整型的数据类型保存的数值要大?科学计算法的表示:

5100.00 ---> 5.1*10^3 ---->5.1e3

2.浮点运算的精确度(正无限大和负无限大)   数值中可以使用画线分隔

 7.布尔:boolean true|false 流程控制

8. 字符型  char 16个字节

字符型使用必须要用单引号括起来 'char'

字符串使用双引号括起来 "String"

    1. 通过单字符指定字符值 'A'
    2. 通过转义字符表示特殊字符值 '\n' '\t'
    3. 直接使用Unicode的值表示字符型的值 '\uXXXX' 十六进制的整数

1、char类型能不存放中文字符?

--可以存放中文

--是以ASCII的形式编码

ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统

二进制---》10进制---》字符

2、字符类型数据在程序中是以什么形式保存?(字母、标点符号、数字)

--char可以存放中文 中文使用了UTF-8编码进行存放

--使用UTF-8形式的编码 ‘\uxxxx’

比如:中---->'\u4e2d'

//基本数据类型
public class data{
	//提供JAVA的程序入口main方法 在java中声明一个变量,必须指定类型
	//1、整形数据默认类型是Int 【不能直接打的赋值给小的】
	public static void main(String[] args){
	//输出语句 java是强语言 //错误:不兼容类型,
	byte b=18; //-128~127
	short s = 189; //-23768~32767
	int i =5555;
	long l = 465464654646L; //错误:过大的整数:5464654654 加L
	System.out.println("b="+b);
	System.out.println("s="+s);
	System.out.println("i="+i);
	System.out.println("l="+l);
	
	
	//错误: 不兼容的类型: 从int转换到byte可能会有损失
	//byte item1 = 102;byte item2=103;
	//byte item3 = item1+item2;
	//System.out.println("item3="+ item3);
	
	//浮点型:小数型--单精度--双精度
	//2.浮点型默认是double类型
	float f = 5.65f; // 如果想双精度转单精度 则需要再后面加f
	double d = 4450.66;
	double demo = 5.1E4;
	System.out.println("f="+f);
	
	//布尔--true|false
	boolean bItem=(2>3);
	
	//char -单字符 使用单引号'' 使用ASCII码值 UNIcode 万国码
	char cItem ='中';
	int iItem = cItem;
	System.out.println("iItem="+iItem);
	}
}

2.自动类型提升顺序

小容量的数据类型可以赋值给大容量的数据类型

//基本类型提升的顺序1 :

byte-->short-->int-->long-->float-->double

//基本类型提升的顺序2 :

char-->int-->long-->float-->double

3.强制类型转换

--大容量的数据类型赋值给小容量的数据类型会有类型兼容问题,不能直接赋值,除非通过强制类型转换,首先在java是一个强类型语言,会造成数据亏损

(targetType)value

语法格式:

类型1 变量a = (类型1) 变量b

类型1 变量a = (类型1) (表达式)

public class NarrowConversion{
	public static void main(String[] args)
	{
		int iValue = 233;
		byte bValue = (byte)iValue;
		System.out.println(bValue);
	}
}

五、运算符的使用 

1.算术运算符 + - * / %  

2.扩展后的赋值运算符

ps:扩展后的赋值运算符中包含强制类型转换操作

item += 3;不完全等于item = item +3;

而是等于item = (item的类型)(item +3);

3.位运算符

左移 双目运算符 案例 : 8向左移动一位,低位补0

有符号右移 高位补符号位

无符号右移 高位补0

笔试题:如何最快的实现2*8?  乘法2<<3

除法8/4        8>>2 得2

算法题普遍存在此方法。

4.比较运算符

>   <    >=    <=    ==   !=

5.逻辑运算符(有短路和非短路的概念)

短路与 如果前面的表达式为假,则后面不需要在判断,直接短路

--短路或 前面为真,则直接短路,不执行后面的逻辑判断

6.三目运算符(三个操作元素,相当于判断语句)

(逻辑表达式)?数值1:数值2

如果表达式为真 则赋值数值1,为假则赋值数值2

//三目运算符:判断语句+赋值语句  
		int score = 86;
		String resscore = score>=60?"及格":"不及格";
		//练习  : >=90优秀  >=80良好   >=60及格  其余不及格
		String scoreLevel = score>=90?"优秀":(score>=80?"良好":(score>=60?"及格":"不及格"));

7.自增自减操作

如果自增或自减符号和其他运算符一起操作时,会有顺序的先后:

++在变量的后面,所以先进行算术运算再进行自增操作

++在变量的前面,所以先进行进行自增操作再算术运算

很关键!!

public class Operator{
	//程序的入口  main方法  
	public static void main(String[] args){
		//+[加法、字符串拼接] - / java.lang.ArithmeticException: / by zero
		//int item = 5/0;
		//System.out.println(item);
		
		//扩展后的赋值运算符【笔试题】
		int x = 5;
		int y = -3;
		//y+=x;//y = y+x;  
		
		//位运算符 按位与、按位或、非【按位取反】
		int res = x&y;//全真则为真,有假则为假
		System.out.println(res);
		int res1 = x|y;//有真则为真,全假则为假
		System.out.println(res1);
		int res3 = ~y;//按位取反[包括符号位]
		System.out.println(res3);
		
		//左移、有符号右移  、无符号右移【双目运算符】
		int res4 = y<<1;//左移一位,低位补0   0000 0011  --》 0000 1100
		System.out.println(res4);
		
		int res5 = y>>1;//有符号右移一位,高位补符号位   0000 0011  --》 0000 0001   1111 1101  --》 1111 1110  ==-2
		System.out.println(res5);
		
		int res6 = y>>>1;//无符号右移一位,高位补0   0000 0011  --》 0000 0001   1111 1101  --》 0111 1110  ==大的数值
		System.out.println(res6);
		
		
		//0000 0101 
		//0000 0011 // 1111 1100 = -1-3=-4
		//0000 0111
		
		//逻辑运算符-- 与或非
		//非短路的与和或
		/*if((2>3)|(3<5)){
			System.out.println("结果为true");	
		}*/
		
		//短路与
		if((2>3)&&(3<(5/0))){
			System.out.println("短路与结果为:true");	
		}
		//短路或
		if((2<3)||(3<(5/0))){
			System.out.println("短路或结果为:true");	
		}
		
		if(!(2>3)){
			System.out.println("取反结果为:true");	
		}
		
		
		//自增  自减
		int i = 3;
		//i++;
		//System.out.println("i="+i);
		//当自增和自减与其他运算再同一个表达式时,要注意先后顺序
		//int item = 3+i++;//先进行算术运算,然后在自增
		//int item = ++i+3;//先进行自增,然后在算术运算
		int item = ++i;//包括赋值运算也是要注意顺序
		System.out.println("item="+item);
		System.out.println("i="+i);
		
		
		//三目运算符:判断语句+赋值语句  
		int score = 86;
		String resscore = score>=60?"及格":"不及格";
		//练习  : >=90优秀  >=80良好   >=60及格  其余不及格
		String scoreLevel = score>=90?"优秀":(score>=80?"良好":(score>=60?"及格":"不及格"));
		
		//大于85 A   大于60 B  其余 C  三目运算符的嵌套
		String level = score>85?"A":(score>60?"B":"C");
		
		System.out.println("resscore="+resscore);
		System.out.println("scoreLevel="+scoreLevel);
		
	}
}


总结

学习Java的helloworld、编译及运行,Java程序的组织形式、classpath,注释的使用、基本数据类型,ASCII码、UNIcode、类型自动提升、强制类型转换、运算符的使用

学习节奏非常快,不能走神,我希望我能在接下来的学习里,把握住节奏。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值