JAVA_DAY01


一、java语言历史

1991年为Oak 主要是做电子性嵌入式产品,
从1995年 IE浏览器的出现成就了Oak ----Java

二、Java语言的体系

JavaSE java语言的一些基本语法和用法 应用于PC端 客户端程序
JavaEE Web J2EE web浏览器应用级的项目 OA SAAS ERP 等等
JavaME 塞班系统的应用 android系统的问世
大数据相关领域 hadoop的源码 是java
Spark scala
Python人工智能 爬虫 数据分析

三、 java语言的特点

JVM Java Virtual Machine java虚拟机
因为JVM让不同的平台上就会有不同的java虚拟机 则导致 java语言是一个可以跨平台运行的语言
JVM 是跨语言的平台
java 是跨语言的平台

四、java的环境安装

1.JDK java development kit java开发工具包
2.JRE java runtime environment java运行时环境

JDK文件夹,如图:
在这里插入图片描述
bin:java的运行指令
bd:database
include:c语言所编写的语言
jre:集成的运行环境的文件夹
lib:java第三方工具包
src.zip:java的源代码包

五、环境变量的设置

1.JAVA_HOME

在jdk的安装目录

2.path

在jdk的安装目录的bin目录

3.class_path

在jdk的安装目录的lib目录的dt.jar/tools.jar

六、java程序

public class HelloWorld{
	
	public static void main(String [] args){
		
		System.out.println("Hello Java");
	}
	
}

解析:

			//访问修饰符 类关键字 类名
			public class HelloWorld {
				// 主函数  主方法  -----整个程序的入口
				// 4要素 1-public  2 static 3 void 4 方法名称必须叫main
				public static void main(String [] args){
				    // 打印语句
			        //类.属性.方法 带()都叫方法
					System.out.println("Hello Java");
				}		
			}

运行java程序:
1.通过cmd进入黑窗口
2.cd jdk安装路径 进入
3.javac HelloWorld.java 用javac编译java代码,产生.class的字节码文件
4.java HelloWorld 用java执行.class字节码文件
5.输出结果
注:JVM在底层执行的.class文件都是二进制文件

七、JVM运行原理

在这里插入图片描述

八、java语言的常用规范

1.类的规范

1.不要使用中文 韩文 日文 等 当作类名
2.首字母大写 ----望文生义 驼峰标识 DianHuaben TelephoneNote
3.不要使用关键字
4.不能使用数字开头,但可以使用数字结尾
5.不能使用除了下划线和$ 以外的特殊字符

尽量不要使用Java类库中已经存在的类名,如果使用了的话,要注意导包问题。
注意:类名一般和文件名相同

2.注释

如何使用Eclipse创建工程


	// 单行注释  用于解释说明一行代码的作用
	
	/*
	 * 多行注释  用于解释说明多行代码的作用 
	 */	
	 
	/**
	 * 文档注释  用于解释说明文档、方法中的某些属性的作用 用于描述类的作者 和创作时间 
	 * @author maclu
	 * @since 2021.5.9
	 * @param args
	 * @return 返回值
	 * @throws 抛出异常
	 * 
	 */

3.包的创建

关键字 package 一般命名规范是公司域名的反写,包的主要作用就是为了在不同文件夹下存在相同的文件名称。

导包关键字:import

4.换行 和 制表位

换行\n println() print() 区别在于换行
制表位\t 相当于按一次Tab按键
\ 叫转义字符 一般打印双引号和\时 都需要用到它。

5.Scanner扫描器

package com.openlab.test;

import java.util.Scanner;

public class HelloWorld {
	
	public static void main(String[] args) {		
		System.out.println("请输入您的角色名:");
		
		Scanner input = new Scanner(System.in);
		String key = input.nextLine();
		
		System.out.println(key);
	}
	
}


九、数据类型

1.基本数据类型

1.数值

a. 整型
        byte  字节型  取值范围 -128~127 占8个bit (00000001) 一个字节 默认值为0
        short 短整型 取值范围 -32768~32767 占16个bit 两个字节 默认值为0
        int   整型   取值范围 -2*2的31次方 到2*2的31次方-1 占 32个bit四个字节,默认值为0.
        Long 长整型  取值范围-2*2的63次方 到2*2的63次方-1 占64个bit 八个字节,默认值为0L  大写的L标识的long类型的标识。

 b.浮点型
	        float  单精度  取值范围 1.4E-45~4.4028235E38 占32个bit 四个字节 默认值为0.0f
	        double 双精度 取值范围4.9E-324~1.7976931348623157E308 占64个bit 八个字节 默认值为0.0 

注意:我们在编译器中所看到的数字如果是整数默认为int类型,如果是浮点数 默认为double类型

2.非数值

 c.字符型 char 标识是单引号 用于表示单个字符 会存在数字 字母 特殊符号 以及文字 占16个bit  2个字节  取值范围:0x0000~0xffff  默认值是0x0000;

0 -----48
A -----65 大小写转换±32
a -----97

 d.布尔类型  boolean true false 占8个bit 1个字节

面试题: String 是不是基本数据类型 如果不是基本数据类型有哪些?
String 是字符串类型 -----引用数据类型 不是基本数据类型

2.什么是变量?

一般情况下指的程序中需要计算的数据通过开辟内存空间而存储的数据,这个数据是通过某种媒介来进行访问 用来存储数据的媒介叫变量。

关于变量的声明和定义
数据类型 变量 = 值; 定义
数据类型 变量; 声明

a.成员变量:
在类的里面方法的外面的变量叫成员变量 成员变量存储在堆空间中 heap
不会随着方法的结束而消失
b.局部变量:
在方法的里面所定义的变量叫局部变量 局部变量存储在栈空间中 stack
会随着方法的消失而消失 局部变量不能用static关键字修饰 局部变量的值是由栈空间来创建的。
在这里插入图片描述

3.数据类型的转换

a.数字 byte----short----int----long----float-----double(从小到大)

自动转换:
小类型转大类型自动转换
强制转换:
大类型转换成小类型 强制转换

b.非数字
byte --char-- boolean
布尔类型不能和任何类型互相转换
因为byte类型属于整型 可以和支持ascii码的char类型互相转换。

练习:

int i=1,j;  
byte b = 130; 
long l = 88888888888888888888888; 
short s = -1; 

s = s-1;
float f = 0.1; 
double d = s+f; 
int i1 = i*d;  
int i2 = i1+j; 
byte b1 = 1+2; 
byte b2 = 2;   
byte b3 = b1+b2;
char c = 130;
byte b4 =  c;

char c1 = 97;
char c2 = 1;
		
char c3 = 97+1;
char c4 = c1+c2;

4.复合数据类型----引用数据类型

非基本数据类型都是引用数据类型

5.变量的命名规范

1.变量的首字母小写
2.在同一作用域内 不能出现两个相同命名的变量
其他都与类命名一样

十、运算符

1.算数运算符

      • / %
        % 求余
        10%3 = 1

7%5 ----2
7%-5 ----(2)
-7%5 ----(-2)
-7%-5 ----(-2)
总结 :求余时 负号跟着被除数走。

2.递增、递减(++ --)

练习:

        int a = 9;
		int b = 2;
		int c = a+++b;
		int d = ++a+c++;
		int e = a+++c++;
		
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
		System.out.println(d);
		System.out.println(e);

a=10 b=2 c=11 d= e=
a=11 b=2 c=12 d=22 e=
a=12 b=2 c=13 d=22 e=23

3、逻辑运算符

a.与

& 逻辑与 a&b 表达式a或b中有一个为false 则为false
&& 短路与 a为false b则不参与运算 常用

b.或

| 逻辑或 a|b 表达式a或b中有一个为true 则为true
|| 短路或 a为true 则b不参与运算 常用

c.非

逻辑非 取反

d.异或

^逻辑异或 a|b 表达式a与表达式b两者的值相同 则为fasle 不同为true

注意:逻辑运算符的返回值是boolean类型

4、赋值运算符

 =  运算顺序是从右至左  int a = 0;
+=  a+=1 ----a = a+1;
-=  a-=1-----a=a-1;
*= 同理
/= 同理

5.关系运算符

= 大于 大于等于
< <= 小于 小于等于
== 恒等 用于判定两个基本数据类型的值是否相同
!= 不等

6.三目运算符

X?Y:Z
表达式X的值如果为true 则执行表达式Y 如果为false 则执行表达式Z
可以用于替代if选择分支语句结构。

7.位运算

运算结果 ----数字
位运算和移位运算都要在二进制的基础之上运算

&
按位与 两位都为1时结果才为1 有一个位0都落0
5&13

0101
1101

0101

按位或 一个位1都为1
0101
1101

1101

^
按位异或
两位相同为0 相异为1
5^13

0101
1101

1000
取反 ~5

正整数的二进制 可以通过运算来获得 负数的二进制应该如何运算:

-5的二进制码 = 5的二进制取反+1 补码
反码

8.移位运算

>>右移
各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)

13>>2 右移之后结果是3
128 >> 4
1000
8
右移特点 数字越来越小 移位是除以2的多少次幂
-13>>2

<< 左移
3<<2
3<<2
1100 —12

3<<3
11000----24

左移特点 数字越变越大,移位是多少就是乘以2的多少次幂 左移时不分正负
如果是整数 正常补0
如果是负数 则用整数的补码进行运算

>>> 无符号右移
逻辑右移 不会因为符号位进行 所有高位均补0。

负数右移,举例1:

               -100带符号右移4位。

               -100原码:   10000000    00000000    00000000   01100100

               -100补码:    保证符号位不变,其余位置取反加1

                                     11111111    11111111    11111111   10011100

               右移4位   :   在高位补1

                                     11111111    11111111    11111111    11111001

                             补码形式的移位完成后,结果不是移位后的结果,要根据补码写出原码才是我们所求的结果。其方法如下:

                保留符号位,然后按位取反

                                     10000000    00000000    00000000     00000110

                然后加1,即为所求数的原码:

                                               10000000    00000000    00000000    00000111

                     所有结果为:-7

十一、流程控制

1.按照代码执行顺序来进行执行 ----顺序执行

2.选择分支 判断语句(if-else switch)

注意:浮点类型的数据不适合做等值判断 ,原因是判断的条件难以精确

a.if-else
if(x == 0){
			System.out.println("yes");
			 if(x == 1){
				 System.out.println("yes1");
			 }
		}else if(x==1){
			System.out.println("no");
		}
b.Switch

注意:Break关键 在swtich语句中用于跳出switch的case。

package com.openlab.test;

import java.util.Scanner;

/*
 * 
 * 红绿灯  index 单词 索引 -----
 */
public class SwtichTest {
	
	public static void main(String[] args) {
		
		System.out.println("该亮哪个灯了?");
		Scanner input = new Scanner(System.in);
		String key = input.next();
		// charAt(index) 
		char c = key.charAt(0);
		
          switch (c) {
		case 'r':
			System.out.println("红灯");
			
		case 'y':
			System.out.println("黄灯");
			
		case 'g':
			System.out.println("绿灯");
			break;

		default:
			break;
		}
	}
	
	

}

注意:一般范围性的判断使用if语句 如果是等值类型的判断使用哪个都可以(if or switch)

3.循环结构 while do-while for

a.while循环
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210513210114843.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzcxNjMyOQ==,size_16,color_FFFFFF,t_70)
b.do-while循环

在这里插入图片描述

int i = 0;
		
		do{
			System.out.println(i);
			i++;
		}while(i<10);
c.for循环

在这里插入图片描述

d.跳出语句break 和continue

break 跳出循环体 这个更厉害点
continue 跳出本层循环

X.番外篇_面试

x.1

equals方法用于比较两个String是否相同。。。。且该方法来自于String类中的equals

面试题:
== 和equals的区别?

x.2

面试题:
while循环和do-while循环的区别?


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值