1.Java开发环境:

  1. java编译运行过程:

    1. 编译期:.java源文件,经过编译,生成.class字节码文件
    
    2. 运行期:JVM加载.class并运行.class
    
       - 特点:跨平台、一次编程到处使用
    
  2. 名词解释:

    JVM:java虚拟机
    
         加载.class并运行.class
    
    JRE:java运行环境
    
         除了包含JVM以外还包含了运行java程序所必须的环境
    
         JRE=JVM+java系统类库(小零件)
    
    JDK:java开发工具包
    
         除了包含JRE以外还包含了开发java程序所必须的命令工具
    
         JDK=JRE+编译、运行等命令工具
    
    说明:
         运行java程序的最小环境为JRE
    
         开发java程序的最小环境为JDK
    
  3. 配置环境变量

    • JAVA_HOME:指向jdk的安装路径

    • CLASSPATH:表示类的搜索路径(一般简写为.)

    • PATH:指向jdk下的bin目录

2. eclipse:

  1. IBM、开源的、免费的、不需要安装仅需解压即可
  2. 开发步骤:
    • 新建Java项目/工程---------------小区
    • 新建Java包----------------------楼+单元
    • 新建Java类----------------------房子 main中: System.out.println("HelloWorld");
  3. 注释:解释性文字

    • 单行注释://
    • 多行注释:/* */
    • 文档注释:/** */
  4. 工作空间:所创建的所有java程序的默认保存地址

    • 先装JDK,再运行eclipse
    • eclipse是用Java语言写的
    • 借助于开发工具写程序-----不配置环境变量也可以
    • JDK=JVM+java系统类库+编译、运行等命令工具
  5. java语言的编译运行过程:

    • java源文件,经过编译,生成.class字节码文件
    • JVM加载.class并运行.class(0和1)

1.变量:存数的,代词,指代的就是它所存的那个数

  • 声明:
  • 初始化:第一次赋值
  • 使用:
    4)命名:

    • 只能包含字母、数字、_和$符,并且不能以数字开头
    • 严格区分大小写
    • 不能使用关键字
    • 可以中文命名,但不建议 建议"英文的见名知意"、"驼峰命名法"
      • int score,myScore,myJavaScore; //驼峰命名法(变量名)
      • int Score,MyScore,MyJavaScore; //帕斯卡命名法(类名)

2.基本数据类型:共8种

1)int:整型,4个字节,-21个多亿到21个多亿

1.1)整数直接量默认为int型,但不能超范围,超范围则编译错误

1.2)两个整数相除,结果还是整数,小数位无条件舍弃(不会四舍五入)

1.3)运算时超范围,则发生溢出,溢出是需要避免的

2)long:长整型,8个字节,很大很大很大

2.1)表示长整型直接量,需在数字后加L或l

2.2)运算时若有可能溢出,建议在第1个数字后加L

2.3)System.currentTimeMillis()用于获取自

1970.1.1零时到此时此刻的毫秒数

3)double:浮点型,8个字节,

3.1)浮点数直接量默认为double型,若想表示float需在数字后加f或F

3.2)double和float在运算时,有可能会出现舍入误差(精确运算场合不能使用)

4)boolean:布尔型,1个字节

4.1)只能取值为true和false

5)char:字符型,2个字节

5.1)采用Unicode字符集编码,一个字符对应一个码(0到65535之间)表现的形式的字符char,
但本质上是码int   ASCII码('a'--97  'A'--65  '0'--48)
5.2)字符直接量必须放在单引号中,只能有一个
5.3)特殊符号需通过\来转义

3.基本数据类型间的转换:

数据类型从小到大依次为: byte,short,int,long,float,double,char,boolean

1)两种方式:

1.1)自动类型转换:小类型到大类型

1.2)强制类型转换:大类型到小类型

eg: (要转换成为的数据类型)变量

强转有可能溢出或丢失精度

2)两点规则:

2.1)整数直接量可以直接赋值给byte,short,char,但不能超出范围

2.2)byte,short,char型数据参与运算时,先一律转换为int再运算

4.Scanner接收用户的输入:

1)在package下:

import java.util.Scanner;

2)在main()中:

  Scanner scan = new Scanner(System.in);

3)在第2步之下:

  System.out.println("请输入年龄:");

  int age = scan.nextInt();

  System.out.println("请输入价格:");

  double price = scan.nextDouble();

1.运算符:

  1)算术运算符:+,-,*,/,%,++,--

  2)关系运算符:>,<,>=,<=,==,!= boolean

  3)逻辑运算符:&&,||,! boolean

  4)赋值运算符:=,+=,-=,*=,/=,%=

  5)字符串连接运算符:+

  6)条件/三目运算符:boolean?数1:数2

2.分支结构:

  1. if结构:1条路
  2. if...else结构:2条路
  3. if...else if结构:多条路
  4. switch...case结构:多条路

    • 优点:效率高、结构清晰
    • 缺点:整数、相等
    • break:跳出switch
  5. 任何复杂的程序逻辑都可以通过三种结构来实现:

    1)顺序结构:从上往下逐行执行,每句必走
    
    2)分支结构:有条件的执行某语句,并非每句必走
    
    3)循环结构:有条件的执行某语句多次,并非每句必走
    
    - 能用switch...case实现的,都可以用if...else if实现
    

能用if...else if实现的,不一定能用switch...case实现

char:字符,必须放在单引号中,只能有一个
String:字符串,必须放在双引号中,0个到多个

2.循环:反复执行一段相同或相似的代码

  1. 循环三要素:

      1)循环变量的初始化
    
      2)循环的条件(以循环变量为基础)
    
      3)循环变量的改变(向着循环的结束变)
    
      循环变量:在整个循环过程中所反复改变的那个数
    
  2. 循环结构:

      1)while结构:先判断后执行,有可能一次都不执行
    
      2)do...while结构:先执行后判断,至少执行一次
    
       要素1与要素3相同时,首选do...while
    
      3)for:应用率最高,固定次数循环
    
  3. 三种循环结构的更佳适用情况:

      1)while:"当..."
    
              要素1与要素3不同时首选while
    
      2)do...while:"直到..."
    
                   要素1与要素3相同时首选do...while
    
      3)for:固定次数循环,应用率最高
    
  4. 嵌套循环:

      1)循环中套循环,一般多行多列时使用,外层控制行,内层控制列
    
      2)执行规则:外层循环走一次,内层循环走所有次
    
      3)建议:嵌套层数越少越好,能用一层就不用两层,能用两层就不用三层
    
        若需求必须要使用三层以上的循环才能解决,说明设计有问题
    
      4)break只能跳出一层循环
    
  5. 程序=算法+数据结构

      1)算法:解决问题的流程/步骤(顺序、分支、循环)
    
      2)数据结构:将数据按照某种特定的结构来保存
    
           数怎么存:设计良好的/合理的数据结构会导致好的算法
    

    6.数组:

      1)是一种数据类型(引用类型)
    
      2)相同数据类型元素的集合
    
      3)数组的定义:
    
          int[] arr = new int[10];
    
      4)数组的初始化:
    
          int[] arr = new int[3]; //0,0,0
    
          int[] arr = {2,5,8}; //2,5,8
    
          int[] arr = new int[]{2,5,8}; //2,5,8
    
          int[] arr;
    
          arr = {2,5,8}; //编译错误,此方式只能声明同时初始化
    
          arr = new int[]{2,5,8}; //正确
    
      5)数组的访问:
    
        5.1)通过数组名.length可以获取数组的长度(元素的个数)
    
              int[] arr = new int[10];
    
          System.out.println(arr.length); //10
    
        5.2)通过数组的下标/索引来访问元素
    
            下标从0开始,最大到(数组的长度-1)
    
          int[] arr = new int[3];
    
          arr[0] = 100; //给arr中第1个元素赋值为100
    
          arr[1] = 200; //给arr中第2个元素赋值为200
    
          arr[2] = 300; //给arr中第3个元素赋值为300
    
          arr[3] = 400; //数组下标越界异常
    
          System.out.println(arr[arr.length-1]); //输出最后一个元素的值
    
      6)数组的遍历:
    
          int[] arr = new int[10];
    
          for(int i=0;i<arr.length;i++){
    
            arr[i] = 100;
    
          }
    
          for(int i=0;i<arr.length;i++){
    
            System.out.println(arr[i]);
    
          }
    
          for(int i=arr.length-1;i>=0;i--){
    
            System.out.println(arr[i]);
    
          }
    

1.数组:

7)数组的复制:

7.1)System.arraycopy(a,1,a1,0,4); //效率高、灵活性好

7.2)int[] a1 = Arrays.copyOf(a,6); //效率低、灵活性差

a = Arrays.copyOf(a,a.length+1); //数组的扩容/缩容

8)数组的排序:

8.1)Arrays.sort(arr); //升序,效率高

8.2)冒泡排序:----车轮战

    8.2.1)四个数冒三轮

8.2.2)每一轮都是从第1个元素开始冒

      每一次都是和它的下一个元素比

8.2.3)冒出来的就不再参与比较了

2.方法:

1)封装一段特定的业务逻辑功能

2)尽可能独立,一个方法只干一件事

3)可以被反复多次调用

4)减少代码的重复,有利于代码的维护,有利于团队的协作

3.方法的定义:

修饰词 返回值类型 方法名(参数列表){ //形参
  方法体
}

4.方法的调用:

1)无返回值: 方法名(有参传参); //实参

2)有返回值: 数据类型 变量 = 方法名(有参传参);

5.return:

1)return 值; //1.1)结束方法的执行 1.2)返回结果给调用方
2)return;    //2.1)结束方法的执行(在某种条件之下提前结束方法)

BubbleSort

int[] arr = {78,45,56,4}; //升序(4,45,56,78)

for(int i=0;i<arr.length-1;i++){ //控制轮
  for(int j=0;j<arr.length-1-i;j++){ //控制次
    if(arr[j]>arr[j+1]){
      int t = arr[j];
      arr[j] = arr[j+1];
      arr[j+1] = t;
    }
  }
}
i=2
  j=0 45和4比,换,4,45,56,78----------45出来了
i=1
  j=0 45和56比,不换
  j=1 56和4比,换,45,4,56,78----------56出来了
i=0
  j=0 78和45比,换,45,78,56,4
  j=1 78和56比,换,45,56,78,4
  j=2 78和4比,换,45,56,4,78-----------78出来了

            arr.length-1-i
i=0(第1轮)  比3次
i=1(第2轮)  比2次
i=2(第3轮)  比1次

第一轮:
  78和45比,换,45,78,56,4
  78和56比,换,45,56,78,4
  78和4比,换,45,56,4,78-------------78冒出来了
第二轮:
  45和56比,不换
  56和4比,换,45,4,56,78-------------56冒出来了
第三轮:
  45和4比,换,4,45,56,78-------------45冒出来了

Java language的更多相关文章

  1. study java language

    2016.11.30 1).About the Java Technology 2).The Java Language Environment: Contents

  2. Java Language and Virtual Machine Specifications

    The Java Language Specification, Java SE 8 Edition HTML | PDF The Java Virtual Machine Specification ...

  3. Learning Java language Fundamentals

    Chapter 2 Learning Java language fundamentals exercises: 1.What  is Unicode? Unicode is a computing ...

  4. vscode + gradle 创建 java 项目 - java language server无法启动

    1.在系统上安装一个版本的gradle,用`gradle init --type java-application`创建一个默认的java项目,假设项目目录是hellojava 2.vscode写ja ...

  5. Java® Language Specification

    Java™ Platform, Standard Edition 8 API Specification http://docs.oracle.com/javase/8/docs/api/ The J ...

  6. Java Language Keywords

    Java Language Keywords 典型题目 true.false.null.sizeof.goto.synchronized 哪些是Java关键字?(goto.synchronized) ...

  7. 笔记:Java Language Specification - 章节17- 线程和锁

    回答一个问题:多线程场景下,有时一个线程对shared variable的修改可能对另一个线程不可见.那么,何时一个线程对内存的修改才会对另一个线程可见呢? 基本的原则: 如果 读线程 和 写线程 不 ...

  8. java 语言规范 java language specifications

    在线地址: https://docs.oracle.com/javase/specs/ java语言规范下载: 链接:http://pan.baidu.com/s/1miEpJwk 密码:f89v j ...

  9. Analysis about different methods for reading and writing file in Java language

    referee:Java Programming Tutorial Advanced Input & Output (I/O) JDK 1.4+ introduced the so-calle ...

随机推荐

  1. Cdnbest的cdn程序默认支持web Socket

    Cdnbest的cdn程序默认支持web Socket    WSS 是 Web Socket Secure 的简称, 它是 WebSocket 的加密版本. 我们知道 WebSocket 中的数据是 ...

  2. 第一个只出现一次的字符字符(python)

    题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).   # -*- codin ...

  3. python note 04 list的应用及元组

    1,昨日内容 ascii:字母,数字,特殊字符:1个字节,8位 Unicode:16位 两个字节 升级 32 位 四个字节 utf-8:最少一个字节 8位表示. 英文字母 8位 1个字节 欧洲16位, ...

  4. Power designer 的使用

    1.Powere Designer 逆向 工程 首先 逆向工程 就是将数据库表 导入到模型, 首先新建个模型, 此处就省略 ... 工具栏,数据库(database) 下的 update model ...

  5. sbb指令

    sbb是带借位减法指令,它利用了CF位上记录的借位值. 指令格式:sbb 操作对象1,操作对象2 功能:操作对象1=操作对象1-操作对象2-CF 比如指令sbb ax,bx实现的功能是: (ax)=( ...

  6. 每月最后一周的周六晚上21:00执行任务-crontab

    0 21 * * 6 /bin/sh /root/time.sh #“6”代表周六 时间判断脚本如下: #!/bin/bash if [ "$(date -d "+7 days&q ...

  7. 搭建Fabric网络(二)下载bin和images

    上一篇已经把运行和开发Fabric需要的程序都安装好了,这一篇主要讲怎么运行一个简单的Fabric网络. 1.  下载官方Sample代码 git clone -b master https://gi ...

  8. Spring Boot-右键maven build成功但是直接运行main方法出错的解决方案

    1.代码就一个Controller,从官网复制过来的,如下 package com.springboot.controller; import org.springframework.boot.Spr ...

  9. centOS redis的安装及配置

    1.下载redis的安装包 wget http://download.redis.io/releases/redis-4.0.2.tar.gz 我一般wget的文件都是在一个download的文件夹里 ...

  10. MongoDB学习记录(一) - 安装、启动与建立数据库

    简要说明一个基本概念:MongoDB中的三要素:数据库(database).集合(collection)和文档(document). 文档:类似于JSON对象,由字段(field)和值(value)组 ...