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. 《Effective C++》笔记

    01:视c++为一个语言联邦 为了理解C++,必须要认识其主要的次语言: C 说到底C++仍是以C为基础.区块,语句,预处理器,内置数据类型,数组,指针统统来自C. Object-Oreinted C ...

  2. SSM框架整合过程总结

    -----------------------siwuxie095                                 SSM 框架整合过程总结         1.导入相关 jar 包( ...

  3. Springboot学习06-Spring AOP封装接口自定义校验

    Springboot学习06-Spring AOP封装接口自定义校验 关键字 BindingResult.Spring AOP.自定义注解.自定义异常处理.ConstraintValidator 前言 ...

  4. 自定义RPC框架--基于JAVA实现

    视频教程地址 DT课堂(原名颜群) 整体思路RPC(Remote Procedure Call),即远程过程调用.使用RPC,可以像使用本地的程序一样使用远程计算机上的程序.RPC使得开发分布式程序更 ...

  5. 七、eclipse添加离线约束,使不联网也能有一些代码的提示,例如dubbo

    eclipse添加离线约束,使不联网也能有一些代码的提示,例如dubbo 1.将dubbo.xsd文件放到一个无中文目录下 2.eclipse->windows->preferences- ...

  6. centos关机与重启命令 shutdown -r now 立刻重启

    centos关机与重启命令详解与实战 Linux centos重启命令: .reboot .shutdown -r now 立刻重启(root用户使用) .shutdown -r 过10分钟自动重启( ...

  7. TensorFlow数据读取

    TensorFlow高效读取数据的方法 TF Boys (TensorFlow Boys ) 养成记(二): TensorFlow 数据读取 Tensorflow从文件读取数据 极客学院-数据读取 十 ...

  8. Maven学习 一 概念介绍

    一 Maven是什么 Maven是一个Apache公司的开源项目,主要有两个作用:(1)是项目构建工具.(2)是用来管理java程序中jar包的依赖. 它包含了一个项目对象模型(Project Obj ...

  9. 项目部署到服务器上之后request.getRemoteAddr()为什么获取的都是本地地址

    获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了.如 ...

  10. _ZNote_Qt_QtCreator_Tips_粘贴_历史剪切板

    发现 快捷键 Shift+Command + V 能够出现历史剪切板. 厉害了我的歌