Java基础
Posted 麋鹿双子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础相关的知识,希望对你有一定的参考价值。
一、Java的产生
Java是sun Microsystems 于1995年推出的高级编程语言
二、Java的发展史
Java诞生于sun公司1995年5月——》1996年1月Java1.0——》1997年2月Java1.1——》1998年12月Java1.2,更名为Java2(J2SE:Java标准版/J2EE:企业级开发/J2ME:面向嵌入式如手机游戏的开发)——》2000年5月Java1.3——》2000年5月Java1.4——》2004年9月Java5
——》2005年6月Java6(更名为JavaSE/JavaEE/JavaME)——》2011年7月Java7(sun公司2009年被orcek公司收购,导致版本发布的推迟)——》2014年3月Java8(最新)
三、Java平台的体系结构
JavaSE :(是开发JavaME和JavaEE的基础)面向对象、API、JVM(运行Java虚拟机的环境)
JavaME :移动设备、游戏、通信等
JavaEE : JSP、EJB、服务等
四、开发环境搭建与配置
【1】jdk的搭建与配置
01、找到jdk的目录到bin粘贴路径到(我的电脑——》属性——》高级系统设置——》)环境变量path放到开头并加上英文分号;
02、安装好后进DOS命令——》输入java -version
【2】jdk目录的解释
bin : 一些Java编译解释的命令
jre : Java运行的环境
lib : 一些源文件和类库等等
src.zip : Java类的一些源码(以压缩包的形式存放)
五、开发Java程序
【1】、三步走:
01、编写源程序(.Java文件)
02、编译源程序(.class文件)
03、运行
【2】、使用记事本开发步骤:
01、使用记事本编译.java源程序
02、使用javac命令编译,生成.class文件
03、使用java命令运行.class文件
【3】、开发步骤的具体操作 :
01、 cd(切换到文件所在的位置)
02、javac 文件名.java
03、java 文件名
cd .. 回到上一级
【4】、注意:
01、类名与文件名完全一样,首字母大写
02、main()程序入口,四要素(public static void main (String[] args))必不可少
03、System.out.println()从控制台输出信息,S大写
04、{和}一一对应,缺一不可
【5】、规范
01、类名首字母大写02、代码缩进03、输出内容不能缺少英文的双引号04、一行只写一条语句05、{}的使用及位置
六、java程序的注释
01、单行注释以“//”开始
02、多行注释以“/*”开头,以“*/”结尾(01、Java文件说明02、加在类前面对类进行说明)
03、JavaDoc注释以“/**”开头,以“*/”结尾(生成帮助文档便于读者阅读)
七、使用MyEclipse开发Java程序
01、集成开发环境(IDE)将程序开发环境和程序调试环境集合在一起,方便程序员开发软件
02、使用MyEclipse 开发Java程序步骤:
001、创建一个Java项目
002、手动创建Java源程序
003、编译Java源程序
004、运行Java程序
03、添加jdk Windows——》preferences——》Java——》Installed JREs——》add——》jdk目录
04、设置默认的jdk版本 Windows——》preferences——》Java——》Compiler——》选择1.7版本
05、调节字体大小
001、界面的字体大小Windows——》preferences——》General——》Appearance——》Colors and Fort——》Basic——》Text Font
002、控制台的字体大小Windows——》preferences——》General——》Appearance——》Colors and Fort——》Debug——》Console font
06、调节行号 在行号右键Show Line Numbers打上对勾
07、包资源管理器(用包组织Java源文件,类似于文件夹)
选择菜单 Window——》Show View——》Package Explorer 打开
08、导航器(类似于Windows中的资源管理器)
选择菜单 Window ——》Show View ——》Navigator
bin目录 : 存放可执行的字节码文件
src目录 : 存放Java源文件
八、使用Java反编译工具
01、编译:将源文件(.java)转换成字节码文件(.class)的过程成为编译
02、反编译:将字节码文件(.class)转换回源文件(.java)的过程成为反编译。(如jad、frontend)
03、反编译过程:切换到jad文件下——》输入要编译的反编译的文件目录(反编译的文件默认在jad的安装目录下)
九、使用Java API帮助文档
ctrl键+f :搜索的快捷键
十、变量
01、概念:
001、变量:一个数据存储空间的表示
002、不同数据存入具有不同内存地址的空间,相互独立
02、变量的命名规则:
001、字、下、美、人、数、骆驼
002、有意义
003、不能使用关键字
03、数据类型:
001、数值
0001、整形 byte(1字节8位 -128~+127)int(4字节32位 -2的31次方~+2的31次方-1)short(2字节16位 -2的15次方~+2的15次方-1)long(8字节64位 -2的63次方~+2的63次方-1)
0002、浮点型 double (8字节64位浮点数)float(4字节32位浮点数)
002、非数值
0001、字符 char
0002、布尔 boolean
0003、字符串 String
04、使用变量的步骤:
001、声明变量 数据类型 变量名;
002、赋值 变量名 = 数值
01和02合并 数据类型 变量名 = 数值;
003、使用变量
05.补充:
* alt + / 万能的快捷键
* 单行注释 //
* 多行注释 /*多行文本注释*/
* 文档注释 /**文档注释*/
* 包的命名规范
* 01.域名倒置
* 02.全小写
* 03.防止类名冲突
* 帕斯卡命名法 首字母大写
* 驼峰命名法 第一个单词首字母小写,之后的有意义单词首字母大写
* println() \\n 换行
* print() 在一行中显示数据 \\t 空格
* Xjad 反编译工具
* public:访问修饰符 访问权限最大
* static :静态的 可以修饰方法和属性
* void:返回值类型!没有返回值 必须写void
* main(String [] a)
* 所有的java.lang包下面类,不需要程序员显示导入,jre自带的包
* java中的关键字:
* 用于类和接口的声明-------class extend,implements ,interface
* 包的引入和声明------- package,import
* 基本数据类型----
* byte
* short
* int
* long
* float
* double
* char
* boolean
* 流程控制-----break,case,continue,do,else,for,if,return,switch
* 异常处理----try,catch,finally,throw,throws
* 修饰符---public,private,final,static,abstract,protected
* 操作符---instanceof
* 常见对象---new
* 引用----this,super
* 返回类型----void
* java中的保留字
* 01.goto
* 02.const
* 变量:一个数据存储空间的表示!
* 变量(标识符)的命名规范:
* 01.驼峰命名法,首字母小写
* 02.不能使用关键字和保留字作为变量名
* 03.首字母必须是 字母,下划线 _ 美元符号 $ 人民币符号 ¥,只能有这三种符号
* 04.不能以数字开头,但是数字可以放在后面
* 05.标识符对大小写严格区分
* String 是引用数据类型 而且是java中比较特殊的一个类*/
public static void main(String [] args){
/*
* int 代表数据类型
* 50 我想存贮的数据
* a 我怎么找到50? 通过a !
* a就是记录50在内存中存储的位置
*/
/* int firstNum = 50;
System.out.println(firstNum);
//创建一个字符串变量 用来保存姓名
String name="hello world";
System.out.println(name);*
/*
* 基本数据类型
* byte取值: -128 127
* byte num=-129;(错误超出范围)
* int取值: 负的2的31次方 *
* 只能存储整数类型的数据
* short 短整型
* int 整型
* long 长整型
* 存储小数!
* float
* double 最大的基本数据类型
* 大小
* short<int<long<float<double
* double num1=2;
* char 是字符类型,java对字符采用Unicode字符编码!
* 因为计算机只能存储二进制数据,所以必须对每个字符进行编码!
* \'a\' 对应的就是一个数字 97
* \'A\' 对应的就是一个数字 65
* char num=\'A\';
* System.out.println("A+1的结果:"+(num+1));
* char num2=65;
* System.out.println("65的结果:"+num2);
* 0-65535
* String(引用数据类型)
* 底层其实就是一个char类型的数组
* boolean: 代表真假
* 只有2个值
* true 代表 真
* false 代表 假
* 底层是 0 1 */
/* //双引号 字符串
String word1="我们是最棒的";
String word2="abcde";
//单引号 字符
char sex=\'a\';*/
/* 用来定义真假
* boolean flag=false;
*System.out.println(flag); */
/*变量的使用步骤
* 01. 声明变量
* int money; int :数据类型 money:变量名
* 02.给变量赋值
* money=5000; =把 =右边的值赋值给 =左边
* 03.获取数据
* System.out.print(money);
* (我们常用的方法)在声明变量的同时给变量赋值
* int money=5000;*/
/* * 小练习
* 使用变量存储数据
* 输出 姓名 性别 成绩
* ??姓名 性别 成绩 分别使用什么数据类型??
* //01.使用String类型来定义姓名
* String name="奥黑驴";
* name="小黑";
* name="小黑1";
* name="小黑2";
* //??我怎么实现不让用户区改变这个name属性的值??!!!
* //02.使用char来定义性别
* char sex=\'猪\';
* //03.使用double类型接收成绩
* double score=0;
* System.out.println("姓名是:"+name);
* System.out.println("性别是:"+sex);
* System.out.println("成绩是:"+score);
*/
/* 常量的使用
* 常量 :在程序的运行中,不允许被改变的变量!
* final
* int NUM=200; //普通的变量
* final int NUM=200; //常量
* 常量命名的规范:
* 01.常量名通常大写 ctrl + shift + x /y(小写)
02.不同单词之间使用下划线 ”_”分隔
* 03.一旦被赋值!不允许被改变,通常在声明变量就直接给变量赋值
* 在运行之前,工具爆红!这是编译错误!
* final int FIRST_NUM=500;
*System.out.println(FIRST_NUM);
05、常量
001、注意:01、变量名通常大写02、不同字符使用下划线分隔03、只能被赋值一次,通常定义时即对其初始化
002、优点 :比较安全
06、Scanner的使用
001、使用Scanner的步骤:
第一步:导入Scanner类
Import java.util.*;
第二步:创建Scanner对象
Scanner input = new Scanner(System.in);
第三步:获得键盘输入的数据
Int now =input.nextInt();
002.补充
Scanner类的使用
java.util.*
*:代表了java.util包下面所有的类
01.导入Scanner类
02.创建Scanner对象
001.通过new关键字创建对象
002.反射!!
03.获取用户输入
public static void main(String[] args) {
/* 创建Scanner对象
* Scanner input = new Scanner(System.in);
* Scanner:是类名
* input:我们称之为对象的引用!
* new Scanner(System.in):这是对象!
* System.in:我们称之为参数
*/
/*
* 等待用户输入 怎么获取用户输入的值???
* 用户的名称肯定是一个字符串类型的数据
* next() 获取下个空格之前的内容
* nextLine() 获取所有输入的内容
* 可以 一次性输入 多个 值 之间用 空格隔开
* 而且 数据类型 一定要 对应
*/
Scanner input = new Scanner(System.in);
System.out.println("请输入您的姓名:");
String name= input.next();
/*
* 获取用户输入的年龄
* 肯定是整数 int类型来接收
*/
System.out.println("请输入您的年龄:");
int age= input.nextInt();
System.out.println("请输入您的性别:");
String sex= input.next();
System.out.println("您输入的姓名是:"+name);
System.out.println("您输入的年龄是:"+age);
System.out.println("您输入的性别是:"+sex);
十一、类型转换
1、自动类型转换
01.规则:
001、如果一个操作数为double型,则整个表达式可提升为double型
002、满足自动类型转换的条件
A、两种类型要兼容:数值类型互相兼容
B、目标类型大于源类型 : 如double型大于int型
2、强制类型转换
语法:(类型名) 表达式
十二、运算符
(1)赋值运算符
语法: 变量名 = 表达式;
(2)基本的算术运算符
+、-、*、/、%、++、--
(3)关系运算符
01、等于 :== 不等于 :!= 大于 :> 小于 :< 大于等于 :>= 小于等于 :<=
02、优先级 : > 、<、>=、<= 运算符的优先级高于 == 、!=
(4)逻辑运算符
01、&& :(短路与)两个操作都是true ,结果才是true
|| : (短路或)两个操作数一个是true,结果就是true
! : (非)操作数为true,结果为false;操作数为false,结果为true
02、优先级:!> &&>||
(5)条件运算符(又叫三元(三目)运算符)
语法: 条件 ? 表达式1 : 表达式2 ;
(6)运算符的优先级
01、单目运算符包括 ! ++ -- ,优先级别高
02、优先级别最低的是赋值运算符
03、可以通过()控制表达式的运算顺序,()优先级最高
04、从右向左结合性的只有赋值运算符、三目运算符和单目运算符
05、算术运算符>关系运算符>逻辑运算符
十三、流程控制
(1)流程图
(2)If——else选择结构的流程图
(3)多重if的流程图
(4)嵌套if选择结构的流程图(字符串比较用equals)
(5)switch选择结构
1、解决方法:
01、使用多重if选择结构实现,缺点:结构复杂
02、使用switch选择结构解决,特点:条件为等值判断
2、语法:
Switch(表达式){//表达式类型:int 、short、byte、char、枚举类型、String(jdk1.7)
Case 常量1:
语句;
Break;
Case 常量