day_02_java介绍

一、java概述

  • 创建时间:1991年,命名OAK,是SUN公司推出,1995开始以java名义推出
  • 创建人:Java之父詹姆斯·高斯林
  • 分类:JavaSE,JavaEE,JavaME

二、特性

  1. 面向对象,跨平台,自动垃圾回收,多线程(jvm四大特性)
  2. java是准动态强类型解释性语言(动态主要体现在反射机制)
  3. 编译型语言 : 运行之前,先把源文件,通过指定的编译器生成 机器码文件,可以让计算机直接识别

    优点 : 只需要编译一次,就可以运行多次,执行效率高

    缺点 : 跨平台性能差

  4. 解释型语言 : 每次运行之前,都对源文件进行解释,解释为当前操作系统可以识别的语言

    优点 : 跨平台较好

    缺点 : 每次运行都需要解释,执行效率低C

  5. 动态语言 : 使用变量的时候,不需要指定类型,类型在赋值的时候确定,而赋值是在运行时

  6. 静态语言 : 使用变量的时候,必须先指明类型

  7. 强类型语言 : 一旦类型确定,不可以更改,但是可以强制更改

  8. 弱类型语言 : 可以根据上下文环境,对类型进行动态更改

三、运行机制

 

 

       

四、注意事项

(1)注释

  1. 单行注释

    //这是单行注释,元数据(描述数据的数据),对内容进行描述,不会被jvm解析

  2. 多行注释

    /*
     *这是一行多行注释
    */

  3. 多行注释(文档注释)

    /**
    * 多行注释,可以使用javadoc生成文档
    */

(2)关键字解释

public calss Hello{
    
    //public :公共的
    //class:定义类的关键字,表示定义一个类
    //Hello:类名
    //static:静态资源
    //入口程序,固定写法
    public static void main(String[] args){
        
    }
    
}

(3)、易错点

  1. 入口方法main的拼写
  2. 大小写错误,java中严格区分大小写
  3. 标点符号使用(注意区分中英)
  4. 多次保存,以免忘记保存
  5. 命名规则

    只能是 大小写字母a-zA-Z , 数组0-9 , 下划线 _ , 美元符号 $ 且数字不能开头

    不能使用关键字和保留字

    关键字 :  java中已经被使用的单词,public,class,void,static,int,byte....

    保留字 : java中还没有使用的关键字,但是可能后续新版本中会使用到 goto

    不能单独使用关键字和保留字,比如 piblic1 或者classpublic 是没问题的 

    建议:望文知义使用驼峰命名法(例:ZhangAo)、类名首字母大写、变量名和方法名首字母小写、文件名,类名,方法名,变量名,包名

五、存储原理

  • 程序 : 一堆命令的集合
  • 程序源代码 : 源码
  • 文件类型 : 文本文件,二进制文件,可执行文件
  • 源文件:就是文本文件
  • 二进制文件:01010100011 给计算机看的
  • 可执行文件:程序就是可执行文件,比如exe
  • 编辑器 : 编写文本文件的工具
  • 编译器 : 把文本文件转换为二进制文件,叫编译

(1)、数据的储存

数据想要运算,必须先存储 

(2)、存储方式

内存 : 两端无限延伸的线

硬盘 : 螺旋线

光盘 : 同心圆

(3)、存储单位

Bit : 比特,1bit就是一个电子位,统称位

Byte : 字节 , 1字节= 8bit 8位

Short : 短整型 , 1short= 16bit

Int : 整型 ,1int = 32bit

Long : 长整型 , 1long=64bit

: byte , 8位 最大值就应该是 2^7-1  2的7次方减1 255,但是为了保存负数,最高位为符号位,直接损失一半精度(1 表示负数, 0 表示正数)

1 二进制 00000001

2 二进制 00000010

负数保存补码

-1 二进制 10000001 反码 11111110  补码 (反码+1) 11111111

-2 二进制 10000010 反码 11111101  补码 11111110

(4)、进制

二进制 : 010101010  并且 java中没有办法表示二进制

八进制 : 满8进1 , 10 就等于 十进制的 8 ,java中 0开头  比如 010

十进制 : 满10进1 , java中 非0开头, 20 , 324

十六进制 : 满16进1,a表示10,b表示11 , cdef ,f表示15 ,java中 0x开头,比如 0x11

六、数据类型

(1)、概述

数据类型:本质就是规定占用空间的大小,一般用字节表示

(2)、分类

基本数据类型

  1. 数值型

    整型

    ​            byte 字节 8bit -128~127

    ​            short 短整型 16bit

    ​            int 整形 32bit

               ​ long 长整形 64bit

    浮点型

    ​            float 单浮点 32bit

    ​           double 双浮点 64bit

  2. 字符型

    ​ char 字符 16bit

  3. 布尔型

    ​ boolean 布尔 8bit

(3)、类型使用

①、整形

public class _01_int {
	public static void main(String[] args) {
		// 使用int类型定义一个32位的空间,并命名为i_1,空间中赋值  10
		int i_1 = 10;
		int i_2 = 017;
		int i_3 = 0x10;
		// 想控制台打印
		System.out.println(i_1);
		System.out.println(i_2);
		System.out.println(i_3);
		// 等于是把int的值,自动转换为long类型的值,会发生转变
		long l_1 = 214748364;
		// long类型的值,需要在尾部加 L / l , 推荐使用大写,否则 l和1不好分清 
		long l_2 = 214748361231248L;	
		byte b1 = 127;
		short s1 = 32767;
	}

}

 

②、浮点型

/**
 * float 4byte 32 bit
 * 
 * double 8 byte 64 bit
 * 
 * 默认的小数 是double  , 0.0
 * 
 */
public class _02_Double {
	public static void main(String[] args) {
		// float的值 必须加F/f 不区分大小写
		float f_1 = 2.2F;
		// 强制转换为float类型
		float f_2 = (float)2.2;
		double d_2 = 2.3;
	}
}

 

③、字符型

/**
 * char是字符型,用英文单引号表示 '',并且 单引号中 只能有一个字符
 * char占用两个字节,16位  范围是 0~65535
 * short也是16位,但是范围是 : -32768 - 32767 , 因为需要负数,而char不需要负数
 * 
 * 字符型 不是 字符串型
 * 		字符和整型之间有一个对照表,ASCII码
 * 
 */
public class _03_char {
	public static void main(String[] args) {
		char c_1 = '张';
		int i_1 = c_1;
		System.out.println(c_1);
		System.out.println(i_1);
	}
}

 

④、布尔型

/**
 * java中的布尔型 : 只有true和false
 * 
 * 占用1字节,全是0 是false , 0000 0001 是true
 * 
 * 一般用于判断操作
 * 
 * 布尔类型 默认为false
 * 
 */
public class _05_Boolean {
	public static void main(String[] args) {
		boolean flag = true;
		if (flag) {
			System.out.println("我们去看电影把");
		}else{
			System.out.println("你谁呀?");
		}
	}
}

 

⑤、类型转换

**
 * 1 八种基本类型中,除了boolean类型之外,其他的都可以相互转换
 * 
 * 2 低精度到高精度 是自动转换(隐式转换), 高精度到低精度是强制转换(显式转换)
 * 		byte -> short -> int -> long -> float -> double
 * 					 char ->
 * 
 * 多种数据类型混合运算中,结果的类型是 参与运算的最大的类型
 * 
 * 注意  byte,short char ,int 任意一种或多种进行运算,结果都是int
 * 
 * 强制转换 , 可能造成数据出错
 * 
 */
public class _06_datachange {
	public static void main(String[] args) {
		short s1 = 1;
		// 强制转换 (类型) 值
		char c1 = (char) s1;
		// 自动转换
		int i1 = c1;
		long l1 = 2;
		float f1 = l1;
		byte b1 = 1;
		int i = 10/3 ;
		System.out.println(i);
		int i3 = 256;
		byte b2 = (byte)i3;
		System.out.println(b2);
	}
}

(4)、补充

①、java中不能表示2进制,但是可以可以表示8进制,10进制

/**
 *
 * java中不能表示2进制
 * 八进制 : 012  , 值是以0开头,表示是八进制的值
 * 十进制 : 非0开头的,就是十进制 12312
 * 十六进制 : 0x10 ,值是0x开头的,表示是十六进制的值
 * 
 */
public class _01_int {
	public static void main(String[] args) {
		// 使用int类型定义一个32位的空间,并命名为i_1,空间中赋值  10
		int i_1 = 10;
		int i_2 = 017;
		int i_3 = 0x10;
	}

}

 

②、转义字符

转义字符意义
\n换行
\t横向跳格tab
\v竖向跳格
\b退格
 \r回车
\\反斜杠"\"
 \'单引号"'"
\"双引号"""
*\u4e2dUnicode码


③、默认值

类型默认值
byte0
short0
int0
long0
float0.0F
double0.0
char'\u000'
boleanfalse

七、变量

(1)、常量

/**
 * 常量 : 常量在程序生命周期之内,值不可更改
   生命周期 : 开始执行到执行结束
		
	字面量/直接量 : 没有明确表示空间存储,不能重复使用	
 *	
 */
public class var_01 {
	public static void main(String[] args) {
		int i = 10;
		System.out.println(i);
		// 不能重复使用,占用临时的int空间
		System.out.println(10);
		// 常量,值不能更改
		final int c = 10;
		// c=2;
		System.out.println(c);
	}
}

 

(2)、变量

全局 :

在类之外创建,所有类都可以直接访问,不需要二次引用,所谓二次引用 就是不需要使用 . 进行操作  xxx.xxxx

Java 中不允许在类之外创建变量,但是可以将一个类的变量设置为public static 修饰,那么其他类也是可以访问到该变量的,不过需要使用类名.变量名进行引用,所以java中是没有全局变量和函数的

全局变量安全性较差,更容易造成命名冲突问题,所以java中引入了包机制,所以引用一个变量的时候必须使用包名和类名才能引用

/**
 * 变量 : 在运行过程中,可以更改的数据
 * 
 * 也可以理解为 有名字的内存空间
 * 
 * 变量声明 : 
 * 		数据类型 变量名 = 值;
 * 		数据类型划分内存空间大小, 给空间取名字 赋值(把数据保存到空间中)
 * 
 * 作用域 : 
 * 		一个大括号 {} 就是一个作用域,一个变量的使用范围,不会超过包含它的这个大括号
 * 				不会超过向上碰到的第一个包含它的大括号,但是向下穿透
 * 
 * 变量分类 : 
 * 		
 * 		局部变量 : 方法内部声明的变量,是局部变量,只能在方法中使用,并且直接写变量名即可
 * 
 * 		成员变量 : 类体中,没有使用static修饰的变量 ,就是成员变量,对象相关
 * 
 * 		静态变量 : 类体中使用static修饰的变量,就是静态变量,类相关
 * 
 * 
 * 变量调用 : 
 * 		变量都不能先使用后声明
 * 		局部变量 : 在方法中 直接写变量名即可,并且局部变量 不赋值 不能使用,没有默认值
 * 		静态变量 : 类名.静态变量名调用,当前类中调用当前类 的静态变量,类名可以省略,有默认值
 * 		成员变量 : 对象.成员变量名,有默认值
 * 
 * 		局部变量可以和静态/成员变量同名, 局部变量优先级高
 * 			可以使用 类名.静态变量名 来区分 同名的静态变量和局部变量
 * 
 * 整型 : 0 , 浮点型 : 0.0  , 布尔型 : false , 字符型 : \u0000
 * 
 */
public class var_02 {
	// 成员变量
	int a = 1;
	// 静态变量
	static int b = 2;
	public static void main(String[] args) {
		// 不能先使用后声明 
		// System.out.println(i);
		// 局部变量
		int i = 20;
		System.out.println(i);
		int x = 0 ;
		System.out.println(x);
		// 静态变量调用
		System.out.println(var_02.b);
		System.out.println(b);
		int b = 1;
		//  使用的是局部变量b
		System.out.println(b);
		// 使用的是静态变量b
		System.out.println(var_02.b);
		// 同时创建多个变量并赋值
		int i1=1,i2=2,i3=1;
		// 只有i6有值
		int i4,i5,i6=1;
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值