—————————— ASP.Net+Android+IOS开发、.Net培训、期待与您交流!——————————
java语法(1:关键字,2:标识符,3:注释,4:常量和变量,5:运算符,6:语句,7:函数,8:数组)
1:关键字
定义:被java语言赋予特殊含义的单词
特点:关键字中所有单词都是小写
用于定义数据类型的关键字
class,interface,byte,short,int,long,float,double,char,boolean,void
用于定义数据类型值的关键字
true,false,null
用于定义流程控制的关键字
if,else,switch,case,default,while,do,for,break,continue,return
用于定义访问权限修饰符的关键字
private,protected,public
用于定义类,函数,变量修饰符的关键字
abstract,final,static,synchronized
用于定义类与类之间关系的关键字
extends,implements
用于定义建立实例及引用实例,判断实例的关键字
new,this,super,instanceof
用于异常处理的关键字
try,catch,finally,throw,throws
用于包的关键字
package,import
其他修饰符关键字
native,strictfp,transient,volatile,assert
2:标识符
程序中自定义的一些名称,由26个英文大小写字母,数字0~9,符号_$ 组成。
如: 包名xxxyyyzzz, 类名接口名XxxYyyZzz, 变量名和函数名xxxYyyZzz, 常量名XXX_YYY_ZZZ
规则:1,数字不可以开 头。2,不可以使用关键字
java中严重区分大小写
3:注释
单行注释 //注释文字
多行注释 /*注释文字*/
文档注释 /**注释文字*/
4:常量和变量
常量:程序中不会变化的数据。
整数常量,小数常量,布尔型常量(true,false),字符常量(将一个数字,字母或符号用单引号标识),字符串常量(将一个或者多个字符用双号标识),null常量
变量:内存中一个储存区域,该区域有自己的名称(变量名)和类型(数据类型),该区域的数据可以在同一类型范围内不断变化
定义变量的格式:数据类型 变量名 = 初始化值;
数据类型
1:基本数据类型{ ①数值型(a:整数类型 byte , short , int , long b:浮点类型 flort,double)②字符型 char ③布尔型 boolean }
2:引用数据类型{ 类 class ,接口 interface ,数组 [ ] }。整数默认int,小数默认double
类型转换
byte b = 3 ;
b = b + 3 ;??????强制转换 b=(byte)(b+3)
5:运算符
算数运算符
% 取模 A % B = A — (A / B) * B , 注意 (A / B)含义为整除 ;例 5%5=0;1%5=1;2%5=2;—2%5=—2;2%—5=2;
++自增
例(前)a=2;b=++a;结果:a=3;b=3;
例 (后) a=2;b=a++;结果:a=3;b=2;
赋值运算符
= += —= *= /= %=
思考:例:
int a=3;a+=5; 值等同于a=a+5;
如果是short a = 3;?
a+=5;一次运算a = a + 3;
a=a+5;两次运算a+=3;
比较运算符
== != > < >= <= instanceof
结果都是boolean型的,只有两个值true,false
逻辑运算符
& | ^ ! && ||
& : 两边的boolean表达式结果,有一个为false。那么结果就是false。 否则为true。
| : 两边有一个为true,结果为true。 否则为false。
^ : 两边相同结果是false。 两边不同结果是true。
&和&&的特点: &:无论左边是true是false。右边都运算。 &&:当左边为false时,右边不运算。 |:两边都参与运算。 ||:当左边为true。右边不运算。
位运算符
<< >> >>> & | ^ ~
位运算是直接对二进制进行运算。
例
最有效的方式算出3*8等于几?3<<3;
2<<3相当于3*(2*2*2);
5<<1相当于5*2;
5<<3相当于5*(2*2*2);
两个数的互换 int = n = 3 ; m = 8 ;
1:通过第三变量
int temp;
temp = n;
n = m;
m = temp;
2:不用第三变量(有局限性,int的范围)
n = n + m;
m = n — m;
n = n — m;
3:技巧
n = n ^ m;
m = n ^ m;{(n ^ m)^ m }
n = n ^ m; { n ^(n ^ m )}
三元运算符
格式:(条件表达式)?表达式1 : 表达式2;
如果运算结果为true,运算后的结果是表达式1;如果运算结果为false,运算后的结果是表达式2;
例: int x = 3, y = 4, z;
z = (x>y)?x:y;
6:语句
判断 if语句
格式:
①if(条件表达式){执行语句;}
②if(条件表达式){执行语句;} else{执行语句;} 简写格式:变量 = (条件表达式)?表达式1:表达式2;
③if(条件表达式){执行语句;} else if{执行语句;}......else{执行语句;}
选择switch语句
格式:
switch(表达式){case 取值1:执行语句;break;case取值2:执行语句;break;......default:执行语句;break;}
特点:
1,选择的类型只有四种:byte,short,int,char
2,case之间与default没有顺序。先执行第一个case,没有匹配的case执行default.
3,结束switch语句的两种情况:遇到break,执行的switch语句结束。
4,如果匹配的case或者default没有对应的break,哪么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。
break:作用于switch ,和循环语句,用于跳出,或者称为结束。break语句单独存在时,下面不要定义其他语句,因为执行不到,编译会失败。当循环嵌套时,break只跳出当前所在循环。
int num =4;
int y = 0;
switch(num) {
case 3:
y+=3;
System.out.println("y3="+y);
case 4:
y+=4;
System.out.println("y4="+y);//4
//有break;结束,没有会继续运行下一个。
case 5:
y+=5;
System.out.println("y5="+y);//y=4+5
}
循环语句(while,do while,for)
格式:
while(条件表达式){执行语句;} while:先判断条件,只有条件满足才执行循环体。
do{执行语句;} while(条件表达式); do while: 先执行循环体,在判断条件,条件满足,再继续执行循环体。
for(初始化表达式;循环条件表达式;循环后的操作表达式){执行语句;}
for和while可以进行互换。如果需要定义循环增量,用for更为合适,for语句执行完毕,该变量在内存中被释放。
无限循环的最简单表现形式。 for( ; ; ){ } while( true ){ }
continue:只能作用于循环结构。继续循环。特点:结束本次循环,继续下一次循环。
7:函数
为了提高代码的复用性。对代码进行抽取。将这个部分定义成一个独立的功能。java中对功能的定义是通过函数的形式来体现的。
函数定义的格式。
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,) { 执行语句; return 返回值; }
当函数运算后,没有具体的返回值时,这是返回值类型用一个特殊的关键字来标识。该关键字是void,void:代表的是函数没有具体返回值的情况。当函数的返回值类型是void时,函数中的return语句可以省略不写。
如何定义一个函数呢?
1,既然函数是一个独立的功能,那么该功能的运算结果是什么先明确,因为这是在明确函数的返回值类型。
2,明确在定义该功能的过程中,是否需要未知的内容参与运算。因为是在明确函数的参数列表(参数的类型和参数的个数)。
函数的作用:
1,用于定义功能。
2,用于封装代码提高代码的复用性。
注意:函数中只能调用函数,不能定义函数。
重载的定义:在一个类中,如果出现了两个或者两个以上的同名函数,只要它们的参数的个数,或者参数的类型不同,即可称之为该函数重载了。
注意:重载和返回值类型没关系。参数有顺序。
什么时候用重载?
当定义的功能相同,但参与运算的未知内容不同。
那么,这时就定义一个函数名称以表示起功能,方便阅读,而通过参数列表的不同来区分多个同名函数。
重载示例:打印乘法表
public static void print99(int num){
for(int x=1; x<=num; x++){
for(int y=1; y<=x; y++){
System.out.print(y+"*"+x+"="+y*x+"\t");
}
System.out.println();
}
}
//打印99乘法表
public static void print99(){
print99(9);
}
8:数组:用于存储同一类型数据的一个容器。
元素类型[] 变量名 = new 元素类型[元素的个数];
元素类型[] 变量名 = {元素1,元素2...};
元素类型[] 变量名 = new 元素类型[]{元素1,元素2...};
内存结构
栈内存:用于存储局部变量,当数据使用完,所占空间会自动释放
堆内存:数组和对象,通过new建立的实例都存放在堆内存中
每一个实例都有一个内存地址值,实体中的变量都有默认初始化值,实体不再被使用,会在不确定的时间内被垃圾回收器回收。
方法区,本地方法区,寄存器
选择排序。内循环结束一次,最值出现头角标位置上。
public static void selectSort(int[] arr){
for (int x=0; x<arr.length—1 ; x++){
for(int y=x+1; y<arr.length; y++){
if(arr[x]>arr[y]){
int temp = arr[x];
arr[x] = arr[y];
arr[y]= temp;
}
}
}
}
冒泡排序
public static void bubbleSort(int[] arr){
for(int x=0; x<arr.length—1; x++){//也可以,外循环:for(int x=arr.length—1; x>0; x——)。内循环:for(int y=0; y<x; y++)
for(int y=0; y<arr.length—x—1; y++){//—x:让每一次比较的元素减少,—1:避免角标越界。
if(arr[y]<arr[y+1]){
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
}
折半查找。提高效率,但是必须要保证该数组是有序的数组。
public static int halfSearch(int[] arr,int key){
int min = 0,max = arr.length—1,mid;
while(min<=max){
mid = (max+min)>>1; // (max+min)/2
if(key>arr[mid])
min = mid + 1;
else if(key<arr[mid])
max = mid — 1;
else
return mid;
}
return —1;
}
进制转换 查表法
十进制——>二进制
public static void toBinary (int num){
trans(num,1,1);
}
十进制——>八进制
public static void toOctal (int num){
trans(num,7,3);
}
十进制——>十六进制
public static void toHexadecimal (int num){
trans(num,15,4);
}
public static void trans(int num,int base,int offset){
if(num==0){
System.out.println(0);
return ;
}
}
char[ ] chs = {'0','1','2','3','4','5','6','7','8','9','A','B' ,'C','D','E','F'};
char[ ] arr = new char[32];
int pos = arr.length;
while(num!=0){
int temp = num & base;
arr[——pos] = chs[temp];
num = num >>> offset;
}
for(int x=pos; x<arr.length; x++){
System.out.print(arr[x]);
}
return ;
二维数组
格式1:int [ ] [ ] arr = new int [3] [2];
定义了名称为arr的二维数组
二维数组中有3个一维数组
每个一维数组中有2个元素
一维数组的名称分别为arr[0],arr[1],arr[2]
给第一个一维数组1角标位赋值为78写法是:arr[0][1] = 78;
格式2:int [ ] [ ] arr = new int [3] [ ];
二维数组中有3个一维数组
每个一维数组都是默认初始化值null
可以对这三个一维数组分别进行初始化
arr[0] = new int [3];
arr[1] = new int [1];
arr[2] = new int [2];
格式3:int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};
定义一个名称为arr的二维数组
二维数组中的有三个一维数组
每一个一维数组中具体元素也都已初始化
第一个一维数组 arr[0] = {3,8,2};
第二个一维数组 arr[1] = {2,7};
第三个一维数组 arr[2] = {9,0,1,6};
第三个一维数组的长度表示方式:arr[2].length;
特殊:
int[ ] x,y[ ]; x是一维数组,y是二维数组
数组脚标越界异常 (ArrayIndexOutOfBoundsException)
空指针异常 (NullPointerException)
—————————— ASP.Net+Android+IOS开发、.Net培训、期待与您交流!——————————
详细请查看:http://edu.csdn.net
- 黑马程序员_Java基础组成
Java语言基础组成 2.1关键字 main不是关键字,但被JVM所识别的名称. 关键字的定义和特点 定义:被Java语言赋予了特殊含义的单词. 特点:关键字中所有字母都为小写. 用于定义数据类型的关 ...
- 黑马程序员_Java基础视频-深入浅出精华版--视频列表
\day01\avi\01.01_计算机基础(计算机概述).avi; \day01\avi\01.02_计算机基础(计算机硬件和软件概述).avi; \day01\avi\01.03_计算机基础(软件 ...
- 课程2:《黑马程序员_Java基础视频-深入浅出精华版》-视频列表-
\day01\avi\01.01_计算机基础(计算机概述).avi; \day01\avi\01.02_计算机基础(计算机硬件和软件概述).avi; \day01\avi\01.03_计算机基础(软件 ...
- 02 java语言基础
常量:字面值常量(字符串,字符,整数,小数,布尔,null),自定义常量,''这个不是字符常量,""这个是字符串常量 进制: 02.01_Java语言基础(常量的概述和使用) A: ...
- 黑马程序员_java基础笔记(07)...IO流
—————————— ASP.Net+Android+IOS开发..Net培训.期待与您交流!—————————— IO(InputStream,outputStream)字节流 (Reader,Wr ...
- 黑马程序员_java基础笔记(10)...JDK1.5的新特性
—————————— ASP.Net+Android+IOS开发..Net培训.期待与您交流! —————————— 1:静态导入.2:for—each循环.3:自动装箱/拆箱.4:可变参数.5:枚举 ...
- 黑马程序员_Java基础视频-深入浅出精华版--PPT 文件列表
\day01\code\第一章_Java概述.ppt;\day01\resource\资料\50道编程题(有精力的同学看看).doc;\day01\resource\资料\Sun_Java程序员认证考 ...
- 黑马程序员_Java基础:网络编程总结
------- android培训.java培训.期待与您交流! ---------- Java语言是在网络环境下诞生的,它是第一个完全融入网络的语言,虽然不能说它是对支持网络编程做得最好的语言,但是 ...
- 黑马程序员_Java基础:反射机制(Reflection)总结
------- android培训.java培训.期待与您交流! ---------- 反射在java中有非常重大的意义,它是一种动态的相关机制,可以于运行时加载.探知.使用编译期间完全未知的clas ...
随机推荐
- Visual Studio Code 教程之————入门篇
Visual Studio代码是一个轻量级但功能强大的源代码编辑器,可在您的桌面上运行,适用于Windows,macOS和Linux.它内置对JavaScript,TypeScript和Node.js ...
- pandas 实现rfm模型
import pandas as pd import numpy as np df = pd.read_csv('./zue_164466.csv') df['ptdate'] = pd.to_dat ...
- Redis学习十:Redis的复制(Master/Slave)【重要】
一.是什么 官网 行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 二.能干嘛 读写分离 容灾恢 ...
- Redis实战(一)CentOS 7上搭建redis-3.0.2
1.安装redis wget http://download.redis.io/releases/redis-3.0.2.tar.gz tar zxvf redis-3.0.2.tar.gz cd ...
- python初步学习-python模块之 commands
commands 通过 os.popen() 执行 shell 命令,返回两个对象,一个是 状态码(Int).另一个为命令输出(str) commands.getoutput(cmd) 返回命令执行输 ...
- python作业模拟计算器开发(第五周)
作业需求: 模拟计算器开发: 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/1 ...
- 20165320 预备作业2:技能学习心得与C语言学习
一.技能学习心得 1.你有什么技能比大多数人好? 我觉得我的篮球打得比一般的人好吧,但是也仅仅掌握了大部分基本的篮球技巧,算不上精通. 2.针对这个技能的获取你有什么成功的经验? 我觉得要打好篮球需要 ...
- python学习之argparse模块的使用
以下内容主要来自:http://wiki.jikexueyuan.com/project/explore-python/Standard-Modules/argparse.html argparse ...
- phpStudy apache无法启动 apache启动后又停止
一.是防火墙拦截: 二.是80端口已经被别的程序占用,如IIS,迅雷等: 三.是没有安装VC9运行库,php和apache都是VC9编译: 四.虚拟机配置路径中有中文: 五.在检测端口后强制重启 把配 ...
- Linux查看用户密码修改时间
在/etc/shadow文件里面,第三个字段标识表示密码修改日期:这个是表明上一次修改密码的日期与1970-1-1相距的天数.如果账户自创建后,没有修改过密码,就可以使用这个字段来查找账号创建日期. ...