Java language
1.Java开发环境:
java编译运行过程:
1. 编译期:.java源文件,经过编译,生成.class字节码文件 2. 运行期:JVM加载.class并运行.class - 特点:跨平台、一次编程到处使用
名词解释:
JVM:java虚拟机 加载.class并运行.class JRE:java运行环境 除了包含JVM以外还包含了运行java程序所必须的环境 JRE=JVM+java系统类库(小零件) JDK:java开发工具包 除了包含JRE以外还包含了开发java程序所必须的命令工具 JDK=JRE+编译、运行等命令工具 说明: 运行java程序的最小环境为JRE 开发java程序的最小环境为JDK
配置环境变量
JAVA_HOME:指向jdk的安装路径
CLASSPATH:表示类的搜索路径(一般简写为.)
PATH:指向jdk下的bin目录
2. eclipse:
- IBM、开源的、免费的、不需要安装仅需解压即可
- 开发步骤:
- 新建Java项目/工程---------------小区
- 新建Java包----------------------楼+单元
- 新建Java类----------------------房子 main中: System.out.println("HelloWorld");
注释:解释性文字
- 单行注释://
- 多行注释:/* */
- 文档注释:/** */
工作空间:所创建的所有java程序的默认保存地址
- 先装JDK,再运行eclipse
- eclipse是用Java语言写的
- 借助于开发工具写程序-----不配置环境变量也可以
- JDK=JVM+java系统类库+编译、运行等命令工具
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.分支结构:
- if结构:1条路
- if...else结构:2条路
- if...else if结构:多条路
switch...case结构:多条路
- 优点:效率高、结构清晰
- 缺点:整数、相等
- break:跳出switch
任何复杂的程序逻辑都可以通过三种结构来实现:
1)顺序结构:从上往下逐行执行,每句必走 2)分支结构:有条件的执行某语句,并非每句必走 3)循环结构:有条件的执行某语句多次,并非每句必走 - 能用switch...case实现的,都可以用if...else if实现
能用if...else if实现的,不一定能用switch...case实现
char:字符,必须放在单引号中,只能有一个
String:字符串,必须放在双引号中,0个到多个
2.循环:反复执行一段相同或相似的代码
循环三要素:
1)循环变量的初始化 2)循环的条件(以循环变量为基础) 3)循环变量的改变(向着循环的结束变) 循环变量:在整个循环过程中所反复改变的那个数
循环结构:
1)while结构:先判断后执行,有可能一次都不执行 2)do...while结构:先执行后判断,至少执行一次 要素1与要素3相同时,首选do...while 3)for:应用率最高,固定次数循环
三种循环结构的更佳适用情况:
1)while:"当..." 要素1与要素3不同时首选while 2)do...while:"直到..." 要素1与要素3相同时首选do...while 3)for:固定次数循环,应用率最高
嵌套循环:
1)循环中套循环,一般多行多列时使用,外层控制行,内层控制列 2)执行规则:外层循环走一次,内层循环走所有次 3)建议:嵌套层数越少越好,能用一层就不用两层,能用两层就不用三层 若需求必须要使用三层以上的循环才能解决,说明设计有问题 4)break只能跳出一层循环
程序=算法+数据结构
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的更多相关文章
- study java language
2016.11.30 1).About the Java Technology 2).The Java Language Environment: Contents
- Java Language and Virtual Machine Specifications
The Java Language Specification, Java SE 8 Edition HTML | PDF The Java Virtual Machine Specification ...
- Learning Java language Fundamentals
Chapter 2 Learning Java language fundamentals exercises: 1.What is Unicode? Unicode is a computing ...
- vscode + gradle 创建 java 项目 - java language server无法启动
1.在系统上安装一个版本的gradle,用`gradle init --type java-application`创建一个默认的java项目,假设项目目录是hellojava 2.vscode写ja ...
- Java® Language Specification
Java™ Platform, Standard Edition 8 API Specification http://docs.oracle.com/javase/8/docs/api/ The J ...
- Java Language Keywords
Java Language Keywords 典型题目 true.false.null.sizeof.goto.synchronized 哪些是Java关键字?(goto.synchronized) ...
- 笔记:Java Language Specification - 章节17- 线程和锁
回答一个问题:多线程场景下,有时一个线程对shared variable的修改可能对另一个线程不可见.那么,何时一个线程对内存的修改才会对另一个线程可见呢? 基本的原则: 如果 读线程 和 写线程 不 ...
- java 语言规范 java language specifications
在线地址: https://docs.oracle.com/javase/specs/ java语言规范下载: 链接:http://pan.baidu.com/s/1miEpJwk 密码:f89v j ...
- 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 ...
随机推荐
- 《Effective C++》笔记
01:视c++为一个语言联邦 为了理解C++,必须要认识其主要的次语言: C 说到底C++仍是以C为基础.区块,语句,预处理器,内置数据类型,数组,指针统统来自C. Object-Oreinted C ...
- SSM框架整合过程总结
-----------------------siwuxie095 SSM 框架整合过程总结 1.导入相关 jar 包( ...
- Springboot学习06-Spring AOP封装接口自定义校验
Springboot学习06-Spring AOP封装接口自定义校验 关键字 BindingResult.Spring AOP.自定义注解.自定义异常处理.ConstraintValidator 前言 ...
- 自定义RPC框架--基于JAVA实现
视频教程地址 DT课堂(原名颜群) 整体思路RPC(Remote Procedure Call),即远程过程调用.使用RPC,可以像使用本地的程序一样使用远程计算机上的程序.RPC使得开发分布式程序更 ...
- 七、eclipse添加离线约束,使不联网也能有一些代码的提示,例如dubbo
eclipse添加离线约束,使不联网也能有一些代码的提示,例如dubbo 1.将dubbo.xsd文件放到一个无中文目录下 2.eclipse->windows->preferences- ...
- centos关机与重启命令 shutdown -r now 立刻重启
centos关机与重启命令详解与实战 Linux centos重启命令: .reboot .shutdown -r now 立刻重启(root用户使用) .shutdown -r 过10分钟自动重启( ...
- TensorFlow数据读取
TensorFlow高效读取数据的方法 TF Boys (TensorFlow Boys ) 养成记(二): TensorFlow 数据读取 Tensorflow从文件读取数据 极客学院-数据读取 十 ...
- Maven学习 一 概念介绍
一 Maven是什么 Maven是一个Apache公司的开源项目,主要有两个作用:(1)是项目构建工具.(2)是用来管理java程序中jar包的依赖. 它包含了一个项目对象模型(Project Obj ...
- 项目部署到服务器上之后request.getRemoteAddr()为什么获取的都是本地地址
获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了.如 ...
- _ZNote_Qt_QtCreator_Tips_粘贴_历史剪切板
发现 快捷键 Shift+Command + V 能够出现历史剪切板. 厉害了我的歌