Java之初识
今天开始学习Java
1.什么是Java?
Java是1995年由sun公司推出的一门极富创造力的面向对象编程语言,是由Java之父詹姆斯格斯林博士设计的。
Java名字的由来:据说,java刚刚设计出来时叫做OAK,后来注册时OAK已经被注册,后来他们喝着咖啡思考新的名字,看到手里热气腾腾得咖啡,想到了生产咖啡的爪哇岛,因此Java语言就命名为Java,它的标志就是一杯热气腾腾的咖啡。
Java程序既是编译性的,也是解释性的。
Java是第三代编程语言,第一代编程语言是机器语言,也就是只有机器能识别的 01011011这样的二进制语言,第二代语言是汇编语言,Java,c等高级编程语言都可以算作第三代语言。
java语言的一个核心: jdk, java development kits---面向开发人员 jre, java Runtime Environment---服务器上
Java的两个核心机制
java虚拟机---(以字节码为指令的CPU)---*.class java编译器-->字节码-->类加载器进行验证-->虚拟机运行
垃圾回收机制 public class ...{ int a = 1; } c/c++垃圾回收由程序员去运行
Java编程语言(一门纯面向对象)的特点: 1, 面向对象 (1), 封装 (2), 继承 (3), 多态 2, 安全性 3, 跨平台,Java是一种跨平台的编程语言,一次编写,到处执行。
2.Java是如何运行的?
Java程序经过编译之后可以转换为一种叫做Java字节码的中间语言,这个编译器就是我们常用的JDK,这个生成的字节码再交给Java虚拟机,由Java虚拟机将字节码变成机器可以识别的机器语言,这个Java虚拟机就是我们常用的JRE。具体过程如下图:
3.Java的三个版本
JavaSE:Java的标准版,主要用于桌面应用程序开发。同时也是Java程序的基础。比如Oracle11g的安装包,eclipseIDE开发工具,JavaSE包含了Java的基础,比如JDBC就是Java链接数据库的操作,以及网络通信多线程等技术。
JavaEE:是Java的企业版,主要用于企业级分布式网络程序,比如电子商务和ERP企业管理系统,其核心为企业Java组建模型。例如淘宝京东都是用JavaEE开发的。JavaEE包含了JavaSE的全部功能,我们可以在JavaEE中直接调用JavaSE的所有方法,比如在服务器上开启线程和数据流等等。
JavaME:主要应用于嵌入式系统的开发,例如手机等移动设备。
4.什么是API?
应用程序编程接口,JavaAPI文档是Java开发中不可缺少的帮助文档,他记录了JAVA语言中海量的API,主要包括了类的继承结构,成员变量,成员方法,构造方法以及静态成员等等一些详细的说明和帮助信息。
API在线查看:http://docs.oracle.com/javase/8/docs/api/index.html
也可以从Oracle官网下载离线API文档到电脑。
5.搭建Java开发环境
从Oracle下载电脑相应操作系统位数的JDK安装包。下载安装之后,我的电脑-右键-属性-高级系统设置-环境变量-系统变量
创建两个个系统变量:
变量名:JAVA_HOME (用来保存JDK的安装路径)
变量值:C:Program FilesJavajdk1.8.0(电脑的jdk安装路径,名称全英文)
变量名:CLASSPATH (JDK类库路径)
变量值:.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar;
选择“系统变量”中变量名为“Path”的环境变量,双击该变量,把JDK安装路径中bin目录的绝对路径,添加到Path变量的值中,并使用半角的分号和已有的路径进行分隔。
变量名:Path (配置所有的系·统环境命令)
变量值:%JAVA_HOME%bin;%JAVA_HOME%jrebin;
配置完成后在操作台输入命令 javac 和 java检查是否配置成功。
这是java的环境配置,配置完成后直接启动eclipse,它会自动完成java环境的配置。
6.一个简单的java程序
打开文本编辑器,输入如下代码
public class hi{
public static void main(String[] args){
System.out.println("hi java");
}
}
简单解释一下以上Java代码:public是四种权限修饰符之一,代表的意思是公共的,class声明后面的内容是一个类,static表示是静态的,void代表没有返回值,main表示一个方法,()代表参数,string代表参数类型,[ ]表示数组,args参数名,{}里是方法体,System.out.println是在控制台上打印出来。
然后修改文件名为hi.java
打开控制台,找到文件所在目录,输入如下
输入javac hi.java进行编译,可以看到文件夹下多了一个叫做hi.class的文件
在输入java hi 回车,可以看到屏幕输出了我们要输出的文字
7.Java需要注意的地方
类名需要和文件名一致。
标识符:
凡是需要自己命名的地方都是标识符。标识符不能与关键字重复。
严格区分大小写。
保留字:goto 等。
标识符能不能艺术字开头。
类名首字母最好大写。
8.Java的数据类型
分为基础数据类型和引用类型两大类。基础数据类型又分为四类八种:
基础数据类型不能 =null,引用类型可以
1, 整数型 byte 2的8次方(取值范围--<-128~127>)--1个字节 short 2的16次方--2个 int 2的32次方--4个 long 2的64次方--8个 2, 浮点型 float 有效位数7位--4个 单精度 32位二进制描述
double 有效位数15位--8个 双精度 64位二进制描述 3, 布尔型 boolean(只有两个值, true, false)--1个 4, 字符型
字符用单引号,字符串用双引号 char--2个字节
char a = 'q';
需要注意的几种赋值:
char c = 98;----ASCII,代表ASCII码表第98位 char c = 'n'; 转义字符,换行 char c = 'u0061';----unicode编码
字符串 String String s = "hanqi";
java引用类型(对象):--可以=null 所有的类 所有的接口 所有的数组
9.Java运算
算术运算符:+ - * / % ++ --
关系运算符:> < >= <= == != 逻辑运算符:! &(并且, 和) &&(短路运算符) | || ^(异或)
异或运算符: 转换成二进制的形式来对比每一位数, 不一样的为1, 一样的为0
位运算符:>> << >>>(无符号右移)
赋值运算符:= += -= *= /= %=
字符串连接运算符:+
需要注意的地方: 在输出的时候, 只要有一个参数是字符串, 整个输出结果都是字符串
三元运算符(表达式)(三目运算符):布尔值?值1:值2
例子:
public class hi{
public static void main(String[] args){
int a=3;
System.out.println(a++);//先输出a,3,再自增,4
System.out.println(++a);//a再次自增,5,输出a
System.out.println(--a);//a-1,再输出a
System.out.println(a--);//输出a,再a-1
}
}
//异或运算符是用符号“^”表示的,其运算规律是:
//两个操作数的位中,相同则结果为0,不同则结果为1。下面看一个简单的例子。
public class hi{
public static void main(String[] args){
int a=15;
int b=2;
System.out.println("a 与 b 异或的结果是:"+(a^b));
}
}
分析上面的程序段:a 的值是15,转换成二进制为1111,而b 的值是2,转换成二进制为0010,根据异或的运算规律,可以得出其结果为1101 即13。
public class hi{
public static void main(String[] args){
System.out.println("1"+(1+1));
System.out.println("1"+1+1);
}
}
public class hi{
public static void main(String[] args){
System.out.println(5<<2);//运行结果是20
System.out.println(5>>2);//运行结果是1
System.out.println(5>>3);//结果是0
System.out.println(-5>>3);//结果是-1
System.out.println(-5>>>3);//结果是536870911
}
}
5<<2:
首先会将5转为2进制表示形式(java中,整数默认就是int类型,也就是32位):
0000 0000 0000 0000 0000 0000 0000 0101 然后左移2位后,低位补0:
0000 0000 0000 0000 0000 0000 0001 0100 换算成10进制为20
5>>2:
还是先将5转为2进制表示形式:
0000 0000 0000 0000 0000 0000 0000 0101 然后右移2位,高位补0:
0000 0000 0000 0000 0000 0000 0000 0001
-5>>3:
-5换算成二进制: 1111 1111 1111 1111 1111 1111 1111 1011
-5右移3位后结果为-1,-1的二进制为: 1111 1111 1111 1111 1111 1111 1111 1111 // (用1进行补位)
-5无符号右移3位后的结果 536870911 换算成二进制: 0001 1111 1111 1111 1111 1111 1111 1111 // (用0进行补位)
通过其结果转换成二进制后,我们可以发现,正数右移,高位用0补,负数右移,高位用1补,当负数使用无符号右移时,用0进行部位(自然而然的,就由负数变成了正数了)
注意:笔者在这里说的是右移,高位补位的情况。正数或者负数左移,低位都是用0补。
- 自封装Android软键盘工具类ImeUtil
- XSS挑战第一期Writeup
- 安全公司新星Aorato推出“行为防火墙”
- 倍数提高工作效率的 Android Studio 奇技
- xss如何加载远程js的一些tips
- Android中如何实现图文混排
- Jenkins 创始人:持续交付的 What、Why 及 How
- Android中如何提取和生成mp4文件
- 两张图片告诉你为什么域名会被解析到65.49.2.178
- 【有人@我】Android中高亮变色显示文本中的关键字
- 一个简单易用的 Android 导航栏TitleBar
- 分析一个跨平台DDOS僵尸网络
- Android快速开发框架 Ultimate
- Cisco Linksys路由器蠕虫The Moon正在蔓延
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- LinkedList - 141. Linked List Cycle
- LinkedList - 206. Reverse Linked List
- Array - 188. Best Time to Buy and Sell Stock IV
- Tree - 112. Path Sum
- 首个无tricks的情况下将ResNet-50提高到80%+!CMU开源MEAL V2
- Tree - 257. Binary Tree Paths
- Tree - 226. Invert Binary Tree
- Tree - 101. Symmetric Tree
- Tree - 100. Same Tree
- Tree - 102. Binary Tree Level Order Traversal
- Dynamic Programming - 91. Decode Ways
- Dynamic Programming - 213. House Robber II
- Dynamic Progamming - 198. House Robber
- Dynamic Programming - 221. Maximal Square
- Dynamic Programming - 174. Dungeon Game