第一章——java语言概述
图形化界面
图形化界面操作:效率低
命令行操作:效率高
md 创建文件夹
rd 删除文件夹
cd .. 返回上一级目录
- 游戏、办公软件——应用软件
- win7——系统软件
- 电脑——硬件
1、Java简介
是SUN,一门高级程序语言。
是一种面向Internet的编程语言。
随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。
简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
2、Java语言平台版本
-
JAVA SE标准版
1、支持桌面级应用的开发,提供了一套完整的java核心API文档说明
-
JAVA EE企业版
-
是为开发企业环境下的应用程序提供的一套解决方案
-
该技术体系中包含的技术如Servlet Jsp等,主要针对于Web应用程序开发
-
-
JAVA ME小型版
-
是为机顶盒,移动电话和PDA之类嵌入式消费电子设备提供的Java语言平台
-
包含虚拟机和一系列标准化的Java API
-
3、Java语言的特点
-
简单性
-
面向对象
-
跨平台
什么是跨平台性:通过Java语言编写的应用程序在不同的系统平台上都可以运行。
原理是什么:只要在需要运行的java应用程序的操作系统上先安装一个Java虚拟机(JVM)即可由JVM来负责Java程序在该系统中的运行。
4、Java语言的环境搭建
JRE(Java运行环境)包含Java虚拟机和java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。
JDK(Java开发工具包)JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE开发工具:编译工具(java.exe)打包工具(jar.exe)等
1、下载jdk,修改安装路径,安装(不用安装JRE)
2、配置Java运行环境(在任意路径下都可以运行java.exe软件)
Path %JAVA_HOME%\bin;
JAVA_HOME C:\Program Files\Java\jdk1.8.0_241
5、入门程序
G:\javacode>javac HelloWorld.java (生成HelloWorld.class可执行文件)
G:\javacode>java HelloWorld (执行)
Hello World
第二章——java基本语法
1、关键字
class public static void
都得小写
2、标识符
凡是自己可以起名字的地方都叫做标识符
规则:
由26个英文字母大小写,09,或$组成
数字不可以开头。 不可以使用关键字和保留字,但能包含关键字和保留字。 Java中严格区分大小写,长度无限制。 标识符不能包含空格。
3、注释
用于解释程序的文字就是注释
提高了代码的阅读性
Java中的注释格式
单行注释 // //
多行注释 /* */
文档注释 /** */
4、二进制常识
二进制:0,1,满2进1.以0b或0B开头。
十进制:0-9,满10进1
八进制:0-7,满8进1.以数字0开头表示。
十六进制:0-9及A-F,满16进1.以0x或0X开头表示。此处的A-F不区分大小写。
5、常量和变量
常量的概念:
在程序执行的过程中,其数值不可以发生改变的量
Java中常量的分类:
1,整数常量。所有整数
2,小数常量。所有小数
3,布尔( boolean)型常量。较为特有,只有两个数值。 true false
4,字符常量。将一个数字字母或者符号用单引号(' ')标识。
5,字符串常量。将一个或者多个字符用双引号(" ")标识。
6,null常量。只有一个数值就是:null
变量的概念:
内存中的一个存储区域
该区域有自己的名称(变量名)和类型(数据类型)
该区域的数据可以在同一类型范围内不断变化
使用变量注意:
变量的作用范围(一对之间有效) 初始化值问题;
定义变量的格式: 数据类型 变量名 = 初始化值;
6、数据类型
对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间
隐式数据类型转换问题:byte ,short ,char——> int ——> long ——> float——>double
强制类型转换(显式数据转换)
byte b = 5; double i = 6; float f = (float)(b+i);
字符类型数据转换问题:ASCII码表
7、运算符
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
-
√算术运算符
-
√赋值运算符
-
√比较运算符逻辑运算符
-
√三元运算符
++ -- 的使用规律
单独使用的时候,++或--在变量的左或者右,都无所谓,结果都一样
参与了别的操作运算:
如果++(--)在变量的左边,先做++(--)运算,再做其他运算
如果++(--)在变量的右边,先做变量左边的操作,再做++(--)
三元运算符
格式
(条件表达式)?表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为 false,运算后的结果是表达式2;
示例:
获取两个数中大数。 int X=8, y=9, Z;
z=(x>y)? x:y;//变量存储的就是两个数的大数。
8、语句
switch语句(具有穿透性,直到break结束)
“\t” 制表符
break 退出当前循环
continue跳出本次循环,继续下一次循环
9、函数
什么是函数:
函数就是定义在类中的具有特定功能的一段独立小程序
函数的格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,,,,,)
{
执行语句;
return返回值;
}
返回值类型:函数运行后的结果的数据类型
参数类型:是形式参数的数据类型
形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数
实际参数:传递给形式参数的具体数值
return:用于结束函数
返回值:该函数运算后的结果,该结果会返回给调用者。
函数重载
*在同一个类中,可以存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可。
-
重载的特点:
函数名相同
参数的个数不同或者参数的类型不同
与参数的返回值类型无关
与返回值类型无关,只看参数列表。
-
重载的好处:
便于阅读,优化程序设计
-
重载示例
//返回两个整数的和
int add(int a,int b) {return a+b;}
//返回三个整数的和
int add(int a,int b,int c) { return a+b+c;}
10、数组
概念:同一种类型数据的集合,其实数组就是一个容器。
数组的好处:可以自动给数组的元素从0开始编号,方便操作这些元素
内存划分:
-
寄存器
-
本地方法区
-
方法区
-
栈区
存储的都是局部变量
作用范围:函数一执行完毕,该变量也随即释放掉
-
堆区
-
存储的是数组和对象。只要是new出来的东西都在堆存储
-
特点:
-
每一个实体都有地址值
-
堆内存中的每一个变量都有默认初始化值
整数是0 ,小数是0.0 , boolean false
-
-
1、一维数组遍历
class ArrDemo{
public static void main(String[] args){
int[] arr = {8,7,4,9,2};
printArr(arr); //实参
}
public static void printArr(int[] arr){ //arr形参
//获取数组的长度。 数组名.length
for(int i =0;i<arr.length;i++){
System.out.println(arr[i]); //获取数组中每一个值
}
}
}
2、获取数组的最值(最大值)
class ArrDemo2{
public static void main(String[] args){
int[] arr = {8,7,4,9,2};
getMax(arr); //实参
}
public static void getMax(int[] arr){ //arr形参
//获取数组的长度。 数组名.length
int max = arr[0];
for(int i =1; i< arr.length;i++){
if(max < arr[i]){
max = arr[i];
}
}
System.out.println(max); //获取数组中最大值
}
}
3、选择排序(升序排序)
class ArrDemo3{
public static void main(String[] args){
int[] arr = {8,7,4,9,2};
selectSort(arr); //实参
}
public static void selectSort(int[] arr){ //arr形参
//获取数组的长度。 数组名.length
for(int i = 0; i< arr.length-1; i++){
for(int j=i+1; j<arr.length; j++){
if(arr[i] > arr[j]){
int temp = arr[j]; //temp临时变量
arr[j]=arr[i];
arr[i]=temp;
}
}
}
//循环遍历输出
for(int i = 0; i< arr.length; i++){
System.out.println(arr[i]);
}
}
}
4、冒泡排序(降序)
class ArrDemo4{
public static void main(String[] args){
int[] arr = {5,100,58,69,32};
//冒泡排序
bubbleArr(arr); //实参
}
public static void bubbleArr(int[] arr){ //arr形参
//获取数组的长度。 数组名.length
for(int i = arr.length-1; i>0 ; i--){
for(int j=0; j<i; j++){
if(arr[j] > arr[j+1]){
int temp = arr[j+1]; //temp临时变量
arr[j+1]=arr[j];
arr[j]=temp;
}
}
}
printArr(arr);
}
//循环遍历输出
public static void printArr(int[] arr){
for(int i = 0; i< arr.length; i++){
System.out.println(arr[i]);
}
}
//交换数组中两个位置
public static void swap(int[] arr , int from , int to){
int temp = arr[from];
arr[from] = arr[to];
arr[to] = temp;
}
}
5、折半查找
class ArrDemo5{
public static void main(String[] args){
int[] arr = {32,35,56,89,99,100};
int index = halfSearch(arr,100);
System.out.println(index);
}
public static int halfSearch(int[] arr , int key){ //arr形参
int min = 0;
int max = arr.length-1;
int mid = (min+max)/2;
while(key != arr[mid]){
if(key > arr[mid]){
min = mid+1;
}
if(key < arr[mid]){
max = mid-1;
}
if(min > max){
return -1;
}
//重新计算中间下标
mid = (mid+max)/2;
}
return mid;
}
}
6、利用程序输出如下图形:
利用程序输出如下图形:
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
class Asterisk {
public static void main(String[] args) {
for (int i = 1; i <= 13; i += 2) {
for (int j = 1; j <= i && i + j <= 14; j++) {
System.out.print("* ");
}
System.out.println(); // 换行
}
}
}