Day01-Java_basic

Day01

计算机和编程语言

  • 谷歌pagerank算法

    • 被越多网页引用的网页越重要

    • 被越重要的网页引用越重要

    • 给每一个网页赋予权值,空网页权值为0 (马尔科夫链)

0和1

汇编语言

高级语言

(c语言面向对象)(面向对象语言java,c++,c#)

程序运行方式

  • 解释

将源程序一句一句翻译成二进制,然后翻译一句执行一句

  • 编译

一次将整个源程序翻译成二进制

why java

  • 语言使用量最大(Android)

  • 相对简单(简单:相对指针;安全:资源回收;动态代码,虚函数)

  • 用途广

  • 运行设备最多(生产力)

java版本

  • J2SE

单机

完成桌面应用程序开发

  • J2ME

嵌入设备(自动提款机)

  • J2EE(让别人来访问,程序不在客户端本地)

网络

java的优势

  1. java 没有指针; 引用,容易上手

  2. java有自动的资源回收机制(很大程度上规避了此现象:野指针:指针指向了不属于进程的内存空间)

  3. 实现运行时多态的时候,c++必须通过虚函数实现,java中很容易实现

  4. 跨平台,一次编译,多处运行

为什么可以跨平台运行

  • 运行在虚拟机(JVM)上才得以跨平台运行

  • 针对不同平台有windows虚拟机,linux虚拟机,mac os虚拟机

  • java是跨平台的,但是java虚拟机上不跨平台的

jdk和jre(jdk本身包含jre)

  • JDK:java语法,虚拟机,类库

  • JRE: 指java程序运行环境,包含虚拟机和程序运行时核心类库

    JDK的程序交给JRE运行

  • 总结:jdk开发中用,jre运行时用,jvm解决了跨平台:把class文件编译成别的平台认可的文件。

运行与工作原理

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

程序解析

  • 首先编写java源代码程序,扩展名.java

  • 在命令行模式中,输入javac命令对源代码进行编译,生成字节码文件

    • javac 源文件名.java (如:jdk\bin\java HelloWorld.java)

  • 编译完成后,如果没有报错信息,输入java命令对class字解码文件进行解释运行,执行是不需要添加.class扩展名

    • Software\jdk\bin\java HelloWorld

 
工作原理Java源代码/HelloWorld.javaJava源代码/HelloWorld.javaJava字节码文件/HelloWorld.classJava字节码文件/HelloWorld.class运行结果运行结果编译:javac编译,运行javac(HelloWorld.java)JVM(加载字节码文件,到jvm内存运行)(HelloWorld.java)
 


path 环境变量

  • 配置环境变量的作用:告诉操作系统到哪里找命令。给操作系统使用,寻找javac。

  • windows 配置环境:

    1. 我的电脑-右键-属性-高级-环境变量-path-新建javac的jdk/bin/目录

path环境变量配置方法2(提倡方式)

  • path环境变量的参照形配置方法

    • 创建新的变量名称:JAVA_HOME

    • 为JAVA_HOME添加变量值:JDK安装目录

    • 将path环境变量中JDK目录修改:%JAVA_HOME%\bin;

  • path环境变量具有先后顺序

设置JAVA_HOME:

​ (1).为了方便引用,例如,将JDK安装在D\basic\Java\jdk1.8.0目录里,若设置了JAVA_HOME为该目录路径, 那么以后要引用这个路径时, 只需输

入%JAVA_HOME%即可, 避免每次引用都需输入很长的路径字符串;

​ (2).归一原则, 如果设置classpath或path等其它环境变量时,引用的路径不是D\basic\Java\jdk1.8.0...,而是%java_home%....,那么当你JDK安装的路径改变时, 只要改一下JAVA_HOME变量的值即可, 否则,你就要更改所有用绝对路径引用JDK目录的环境变量的值, 如果漏了某个没有修改, 将导致某个程序找不到JDK, 无法运行

​ (3).第三方软件会引用约定好的JAVA_HOME变量, 不然, 你将不能正常使用该软件, 要是某个软件不能正常使用, 不妨想想是不是这个问题

Classpath 环境变量

  • 配置classpath:找到java源文件编译;给jvm使用, 加载字节码文件

    • 创建新的变量名称:classpath

    • 值设定为制定的还有class文件的目录,多个目录间使用分号分割

    • 作用:使用classpath目录中的.class文件可以在任意目录运行

    • 技巧:通常将配置的目录最前面添加配置,即便当前目录,使.class文件搜索时首先搜索当前目录,然后根据目录配置的顺序依次查找,找到后运行

path和classpath的区别

  • path环境变量里面记录的是可执行文件,如.exe文件,对可执行文件先在当前路径去找,如果没找到就去path环境变量中配置的路径去找

  • classpath环境变量里记录的是java类的运行文件所在的目录

Day02-Java basic

idea

create new project-create class文件

  • java语法中类被public修饰:

  1. 文件名和public修饰的类名必须相同

  2. 一个java文件中,有且仅能有一个被public修饰的类

  3. 可以有多个java类,只是这些java类不能被public修饰

  4. javac的编译和执行单位,是类不是文件

关键字

含义:

  • 被java语言赋予特定含义的单词(名称)

特点:

  • 全部小写

关键字注意事项:

  • goto和const作为保留字存在,目前不适用

  • 类似editplus,notepad++这样的高级记事本,针对关键字高亮

标识符(自己起的名字)

含义

  • 就是给类,接口,方法,变量等起名字时使用的字符序列

组成规则

  • 英文大小写字母()

  • 数字字符 0-9

  • $和_

注意事项

  • 不能以数字开头 (❌ int 1a;)

  • 不能是java中的关键字

  • 严格区分大小写

在实际开发中

  • 约定俗成的命名规则

  1. 类和接口:

    一个单词:该单词首字母大写,其余字符小写。 多个单词:每个单词首字母大写,其余字符小写。//为了让代码更具可读性。

    public class JavaSign/ public class HelloWorld/ GetElementById

  2. 变量和方法起名字:

    一个单词:全部小写 (get,set)

    多个单词:第一个单词首字母小写,其余单词首字母大写 (toString,getClass)

  3. 包(为了组织java类的,避免命名冲突):

    一个单词:全部小写。(javabasic)

    多个单词:域名反转形式:com.cscaokyan.www //

  4. 常量:

    一个单词:全部大写 MAX

    多个单词:下划线连接 MAX_VALUE

注释

  • 概述

    • 用于解释说明程序的文字

  • 分类

    • 单行注释://注释文字

    • 多行注释:/* 注释文字 */

    • 文档注释:/** 注释文字 */ 生成jdk文档时候用

  • 应用

    • 先写注释,再写代码

    • 第一步,完成xxx功能 //容易排错

常量

概述

  • 在程序执行当中不会发生改变的量

分类

  • 字面值常量

    • 字符串常量:”hello world“

    • 数值常量:34 59

    • 小数常量:所有小数:0.2. 0.1

    • 字符常量: 单引号括起来的常量 'a' 'b' '中'

    字符和字符串存储的时候,存储的是代表字符或字符序列的数值; 每一个字符,都有相对应的数值。

    单个字符用' ' , >=2个字符用" ".

    ASCII码表

    字符 数值
    'A' 'B' 'C' 65 66 67
    '0' '1' 48 49
    'a' 'b' 'c' 97 98 99
    • 布尔常量: true false

    • Null空常量: 面向对象

  • 自定义常量(面向对象)

四种整数表现形式

二进制

  1. 取值范围(0和1),基数为2

  2. 转十进制 110 = 1 * 2^2 + 1 * 2^1 + 1*2^0 =7

  3. 每一位数字代表的实际值=x*2^n-1

八进制

  1. 取值范围(0-7),基数为8

  2. 转十进制 567 = 5 * 8^2 + 6 * 8^1 + 7*8^0 =

  3. 每一位数字代表的实际值=x*8^n-1

十进制

十六进制

  1. 取值范围(0-9 abcdef),基数为16

  2. 转十进制 c3= 12 * 16^1 + 2 * 16^0

  3. 每一位数字代表的实际值=x*16^n-1

不同进制之间的转换

  • 十进制转二进制,八进制,十六进制

    • 除整取余 (12) 第一步 12 % 2 余0

    • ​ 第二步 6 % 2 余0

    • ​ 第三步 3 % 2 余1

    • ​ 第四步 1 % 2 余1

    • 所以 (12)=( 1100)~10~

  • 二进制转八进制,十六进制

    • 1100 0010 转化为八进制,三位二进制可以表示的范围为0-7,刚好是八进制一位的取值范围,如果是小数,就在小数点向左或向右补全0⃣️。

    (011)(000)(010)=302

    • 二进制转十六进制,从右向左,每四位为一组,(1100)(0010)=c2

常量(不同进制的表现形式)


//1100的十进制:
system.out.println("1100");
//1100的二进制:
system.out.println("0b1100");
//1100的八进制:
system.out.println("01100")
//1100的十六进制:
system.out.println("0x1100")

常量(符号数据表示法)

在计算机内,有符号数有3种表示法:原码、反码和补码

所有数据的运算都是采用补码进行的。

符号位不用分开计算,可以直接和数值位参与运算

正数和负数

一位二进制来表示正负,0为正,1为负

  • 原码:带符号位的数值1100: 正数 0000 1100 表示 +1100

  • ​ 负数1000 1100 表示 -1100

  • 反码:正数的反码与原码相同;负数的反码数对其原码逐位取反(1为0,0变1),但符号位除外。

  • 补码:正数的补码与原码相同;负数的补码是在其反码的末位+1。

  • 原码和其对应的补码的关系:原码 与 补码 是某种互补关系.

    • 已知原码求补码,已知补码求原码. ////////////////

    • 0000 0000 是 0

    • 1000 0000 是-0 反码:1111 1111 补码为: 0000 0000 (反码后+1,进位,保留八位)

变量

变量定义格式(固定格式):

数据类型 变量名 = 初值(字面值常量)

int getValue = 10;

  • 概述

    • 在程序执行的过程中,某个范围内其值可以发生改变的量。

    • 不同的数据类型,给变量分配不同的内存空间。

  • 变量的初始化:给变量赋值

  • 变量的作用域:在同一作用域(main函数大括号)内不能有重名变量。

数据类型

Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间。(对数据类型的区分非常严格)

分类

基本数据类型

各种类型所占空间不同,所表示的数据范围不一样。

  • 数值型

    • 整数类型(byte ( -128-127)(一个字节),short(2),int(4),long(8个))

    • 浮点类型(flout,double)

  • 字符型(char)

  • 布尔型(boolean)

整数默认:int (比如10) 小数默认:double (比如0.0)

如: ❌ flout c = 0.1 对: flout c = 0.1f

引用数据类型

  • 类(class)

  • 接口(interface)

  • 数组([])

类型转换

  • 布尔类型不能转换为其他数据类型

  • 默认转换(小类型转换为大类型) (大范围类型无法放到小范围)

    • byte,short,char—>int—>long—>float—>double

    • byte,short,char相互之间不转换,他们参与运算首先转换为int类型.

      • char类型可以根据ascii转化和int类型相加

  • 强制类型转换(大类型转小类型)

    • 目标类型 变量名=(目标类型)(被转换的数据);

  • short b = 100;

    Byte aa = (byte)(b+1);

    //0 1000 0010

    //

    Byte bb = (byte)130 //超出范围,截取限定位数

猜你喜欢

转载自www.cnblogs.com/liaoguanwang/p/9017069.html
今日推荐