JDK、JRE、JVM

  • JDK:Java Development Kit

    • java开发环境
  • JRE:Java Runtime Environment

    • java运行时环境
  • JVM:JAVA Virtual Machine

    • java虚拟机

JDK开发环境搭建

JDK下载与安装&卸载

JDK8为主流

  • 卸载

    • 环境变量清理、文件夹删除。
  • 下载

    • JDK8主流 下载需要同意许可协议 下载对应版本

    • 安装时记录安装路径用来配置环境变量

    • 配置环境变量

      • 运行sysdm.cpl命令在高级系统设置页面的环境变量进行配置
      • 在系统变量中新增:变量名=》JAVA_HOME 、路径=》安装时的jdk路径
      • 在Path中新增jdk位置值:%JAVA_HOME%\bin
      • 在Path中新增jre位置值:%JAVA_HOME%\jre(有的版本没有)
      • 运行java -version测试是否安装成功
    • 目录讲解

      • bin:可执行程序
      • include:包含c的头文件因为java是c衍生的
      • jre:运行java的一些文件
      • lib:存放库文件
      • src.zip:存放的java的资源文件类文件

Helloworld初试

  • 新建文件夹 如HelloWorld

  • 新建java类的文件如Hello.java

    • 后缀名要改 确保后缀名没有隐藏
  • 写入代码

    • public class Hello{
      public static void main(String[] args){
      System.out.print("Hello,World!");
      }
      }
    • 需要注意的是文件名和和类名要相同也就是 public class Hello此处写的为Hello,文件名就应该是Hello.java,大小写也要相同。
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GEVpZEHd-1659759344259)(assets/image-20220610144252-gdao1pu.png)]
  • 编译代码

    • cmd运行 javac Hello.java

      • cmd工作环境要在该文件目录下
  • 运行代码

    • cmd 运行 java Hello

      • 注意此处只有Hello没有后缀名

Java运行机制

编译型:相当于把一本英语书直接翻译成汉语,然后读,读取的时候效率高,如果后续内容进行更改了要重新翻译,浪费时间。如C/C++

解释型:相当于一边读一边翻译,运行效率偏低,但是可以保证一直是最新的。Java接近于解释型

Java是两者都有个

先编译为字节码文件,然后放入类装载器中,进行字节码校验(如果这里没有检测出问题),进入解释器,按照解释型的方式,进行输出执行。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QOwqGpPf-1659759344260)(assets/image-20220610145934-6zxrtw6.png)]

JDEA安装

开发基础

注释符

//单行注释
/*
多行注释
*/
/**
* 文档注释
* @Author:ks192
*/

关键字&标识

常用关键字

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AdQxkvq1-1659759344260)(assets/image-20220610160057-vboqb93.png)]

标识

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uMuPurwD-1659759344261)(assets/image-20220610160859-gx6mbwq.png)]

注意

  • 所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始
  • 首字符之后可以是字母(A-Z或者-z),美元符($)、下划线(_)或数字的任何字符组合
  • 不能使用关键字作为变量名或方法名。
  • 标识符是大小写敏感的
  • 合法标识符举例:age、$salary、_value、_1_value
  • 非法标识符举例:123abc、-salary、#abc
  • 甚至可以使用汉子作为变量名

数据类型

Java属于强类型语言。

强类型语言:要求变量的使用严格符合规定,所有变量必须先定义
后才能使用,定义后不能转换。

弱类型语言:与强类型语言要求的部分相反

Java数据类型分为两种

  • 基本类型(primitive type)

    • 数值类型

      • 整数类型:

        • byte占1个字节范围:-128-127
        • short占两个字节范围:-32768-32767
        • int占4个字节范围:-2147483648-2147483647
        • long占8个字节范围:-9223372036854775808-9223372036854775807
      • 浮点类型

        • float占4个字节
        • double占8个字节
      • 字符类型:char占2个字节

    • boolean类型:占1位其值只有true和false两个

  • 引用类型(reference type)

    • 接口
    • 数组

进制转换

public class Demo03 {
public static void main(String[] args){
//整数拓展: 进制 二进制0b 十进制 八进制0 十六进制 0x
int i = 10;
int i1 = 0b10;
int i2 = 010;
int i3 = 0x10;
System.out.println(i);
System.out.println(i1);
System.out.println(i2);
System.out.println(i3); }
}

扩展

public class Demo03 {
public static void main(String[] args){
//============================
//浮点扩展?银行业务怎么表示?钱
//BigDecimal 数学工具类 不能用浮点
//==============================
//float 有限 离散 舍入误差 大约 接近 但不等于
//double
//最好完全使用浮点数进行比较
float f = 0.1f;
double d = 1.0/10;
double c = f;
System.out.println(f==d);//输出的是False 也就是float类型转换为double的过程中会发生变化
System.out.println(f);
System.out.println(d);
System.out.println(c); float d1 = 2131231212321332f;
float d2 = d1+1;
System.out.println(d1==d2);//超出float、double也一样定义的范围采取四舍五入记录
System.out.println(d1);
System.out.println(d2);
//==============================
//字符拓展?
//==============================
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1);//强制转换
System.out.println(c2);
System.out.println((int)c2);//强制转换 //所有字符本质还是数字
//编码 Unicode编码表:97-a 2字节 65536 Excel文件早期最多65536行
char c3 = '\u0061';
System.out.println(c3);//a
//制表符 \t制表符 \n换行
System.out.println("hello\tworld");
}
}

类型转换

不能转换布尔类型,只能从高到低转换(如果从低到高强制转换可能会出现内存溢出或者精度的情况)。不能把类型转换为不相干的类型。

public class Demo05 {
public static void main(String[] args){
int i = 200;
byte b =(byte) i;
System.out.println(i);//200
System.out.println(b);//-56
float num1 = 323.123f;
int num2 = (int)num1;
System.out.println(num1);//323.123
System.out.println(num2);//323
}
}

JDK7以后定义int类型的数据可以用下划线(_)进行分割。

变量

变量作用域

  • 类变量
  • 实例变量
  • 局部变量

示例如下:

public class Demo05 {
//类变量 static
static double salary = 25000; //实例变量
//属性变量:从属于该对象;如果不进行初始化,这个变量的值为默认值
//除了基本类型,其余的默认都是null;布尔类型是false
String name;
int age; //main方法
public static void main(String[] args) {
//局部变量只存在于这个方法中
int i = 10;//局部变量 如果不初始化 则不会被输出
System.out.println(i);
//变量类型 变量名字 = new Demo5()
Demo05 demo05 = new Demo05();
System.out.println(demo05.name);
System.out.println(demo05.age);
} //add方法
public void add(){
System.out.println(salary);
}
}

命名规范

◆所有变量、方法、类名:见名知意
◆类成员变量:首字母小写和驼峰原则:monthSalary除了第一个单词以外,后面的单词首字母大写lastname 如:lastName
◆局部变量:首字母小少小写和驼峰原则
◆常量:大写字母和下划线:MAX VALUE
◆类名:首字母大写和驼峰原则:Man,GoodMan
◆方法名:首字母小写和驼峰原则:run0,runRun(O

常量

用final定义

运算符

  • 算术运算符:+,-,* ,/,%,+,
  • 赋值运算符=
  • 关系运算符:>,<,>=,<=,=,!= ,instanceof
  • 逻辑运算符:&&,‖,! 与、或、非。
  • 位运算符:&,|,^,~,>>,<<,>>>(了解!!!)
  • 条件运算符 ?:
  • 扩展赋值运算符:+=,-=,*=,/=。

二元运算符&&关系运算符&&模运算符

示例

public class Demo01 {
public static void main(String[] args){
int a = 10;
int b = 20;
//二元运算符
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double)b);
//关系运算符
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a=b);
System.out.println(a!=b);
//模运算
System.out.println(b%a);表示b除以a取余数
}
}

如果运算过程中类型不同,那么会按照包含范围最大的类型进行转换。

一元运算符

++,–,

public class Demo02 {
public static void main(String[] args){
int a = 1;
int b = a++; //a++=>a = a+1 先赋值后自增
int c = ++a; //++a=>a = a+1 先自增后赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}

逻辑运算符

  • &&

    • 同真才为true,否则就是false
  • ||

    • 有一个true,结果就是true,全为false才为false
  • !

    • 就是取反
public class Demo03 {
public static void main(String[] args){
boolean a = true;
boolean b = false;
System.out.println(a&&b); //false
System.out.println(a||b); //true
System.out.println(!(a&&b)); //true
}
}

位运算符

<<:左移,每左移一位就相当于乘以2,和*乘号的区别在于运行效率较高
>>:右移,与左移相反

字符串连接符

+在使用字符串连接符时,如果在加号左边或者右边有一个字符串类型,则结果就是字符串类型,但是,要遵循运算顺序

如下所示(“+”在不同的位置结果是不同的):

public class Demo03 {
public static void main(String[] args){
int num1 = 2;
int num2 = 3;
System.out.println(""+num1+num2); //23
System.out.println(num1+num2+""); //5
}
}

三元运算符

x ? y : z 如果x为真结果为y,如果x为假,结果为z。

JavaSE--初识&&开发基础的更多相关文章

  1. JavaEE开发基础

    1 JavaEE简介 Java平台有三个版本,分别是JavaSE(Java Platform, Standard Edition),JavaEE(Java Platform, Enterprise E ...

  2. JSP网站开发基础总结《一》

    经过JAVASE的学习相信大家对JAVA已经不再陌生,那么JAVA都可以干什么呢?做算法.应用程序.网站开发都可以,从今天开始为大家奉上JAVAEE之JSP动态网站开发基础总结. 既然是动态网站开发, ...

  3. Python运维开发基础03-语法基础 【转】

    上节作业回顾(讲解+温习60分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen #只用变量和字符串+循环实现“用户登陆 ...

  4. Python运维开发基础01-语法基础【转】

    开篇导语 整个Python运维开发教学采用的是最新的3.5.2版,当遇到2.x和3.x版本的不同点时,会采取演示的方式,让同学们了解. 教学预计分为四大部分,Python开发基础,Python开发进阶 ...

  5. Python运维开发基础01-语法基础

    标签(空格分隔): Mr.chen之Python3.0执教笔记(QQ:215379068) --仅供北大青鸟内部学习交流使用 开发不是看出来的,开发一定是练出来的: 想学好开发,没有捷径可走,只有不断 ...

  6. 20155202 实验四 Android开发基础

    20155202 实验四 Android开发基础 实验内容 1.基于Android Studio开发简单的Android应用并部署测试; 2.了解Android.组件.布局管理器的使用: 3.掌握An ...

  7. 2016-2017-2 20155302 实验四 Android 开发基础

    2016-2017-2 20155302 实验四 Android 开发基础 实验内容 1.下载和安装Android Studio 2.学会使用Android Studio进行简单的Android开发 ...

  8. 第五模块:WEB开发基础 第2章·JavaScript基础

    01-JavaScript的历史发展过程 02-js的引入方式和输出 03-命名规范和变量的声明定义 04-五种基本数据类型 05-运算符 06-字符串处理 07-数据类型转换 08-流程控制语句if ...

  9. [转]JavaEE开发基础

    JavaEE开发基础 1 JavaEE简介 Java平台有三个版本,分别是JavaSE(Java Platform, Standard Edition),JavaEE(Java Platform, E ...

  10. .NET基础拾遗(5)多线程开发基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...

随机推荐

  1. 【技术积累】MySQL优化及进阶

    MySql优化及进阶 一.MySQL体系结构 连接层:是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于 TCP/IP的通信 服务层:大多数的核心服务功能,如SQ ...

  2. 词根 ten 展开 持有 /tin/tent/tain “to hold”

    词根 ten 展开 持有 /tin/tent/tain "to hold" 记忆方式:en是拿出.忘了从哪里看的了.t是动作过去. 如果是 过去的时候已经拿出来,那就是 展开 延展 ...

  3. setting.json 20210825 更新

    vue代码格式化思路 { "pasteImage.path": "${currentFileNameWithoutExt}_Images/", "up ...

  4. Java的Class类,注解与反射

    Class对象: 我们每创建一个类,经过build都会生成对应的.class文件 该类无法只能由虚拟机创建对象,其构造函数为private 当我们创建某个类的对象,ClassLoader(一个类)就会 ...

  5. Android WifiDisplay分析二:Wifi display连接过程

    简介 这一章中我们来看Wifi Display连接过程的建立,包含P2P的部分和RTSP的部分,首先来大致看一下Wifi Display规范相关的东西. HIDC: Human Interface D ...

  6. Libcurl & Log4cplus 移植和使用 以及 Jsoncpp 简单使用

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  7. 数字政府!3DCAT实时云渲染助推上海湾区数字孪生平台

    数字孪生,是一种利用物理模型.传感器数据.运行历史等信息,在虚拟空间中构建实体对象或系统的精确映射,从而实现对其全生命周期的仿真.优化和管理的技术.数字孪生可以应用于各个领域,如工业制造.智慧城市.医 ...

  8. (1)Python基础的一些教学资料和视频

    Python相关的一些书籍 链接: https://pan.baidu.com/s/1uVT_xQRShxsw2gRhjJhikA 密码: 5fgi Python的相关进阶课程 链接: https:/ ...

  9. linux介绍、安装、shell

    1-Linux发展介绍 零 什么是Linux Linux:和我们常见的Windows一样,都是操作系统,但不同的是: Windows: 收费,不开源,主要用于日常办公.游戏.娱乐多一些. Linux: ...

  10. OkHttp请求耗时统计

    目录介绍 01.先提问一个问题 02.EventListener回调原理 03.请求开始结束监听 04.dns解析开始结束监听 05.连接开始结束监听 06.TLS连接开始结束监听 07.连接绑定和释 ...