JavaSE_基本语法学习
JavaSE_基本语法学习
1.注释
注释有三种:
1. 单行注释 //
2. 多行注释 /**/
3. 文档注释 /** */
2.标识符与关键字
java所有的组成部分都需要名字.
标识符:类名,变量名以及方法名都被称为标识符
关键字:除类名,变量名以及方法名外,其他基本为关键字
//abstract 定义抽象方法的修饰符
//boolean 布尔类型
//break 结束循环
//byte 单字节整数型
//case 选择
//catch
//char 字符型
//class 类定义修饰符
//const
//continue 暂停
//default 默认
//do 先循环再判断 循环判断首
//double 双精度浮点数
//else 否则
//else if 否则如果
//enum
//extends 继承父类修饰符
//final 不可修改修饰符
//finally
//float 单精度浮点数
//for 给出次数,按次数循环计次循环首
//goto 运行跳转
//if 如果
//implements 实现抽象类方法修饰符
//import
//instanceof 用来判断其向上转型引用的子类的对象,原来是什么,返回boolean值
//int 4字节整数型
//interface 定义接口修饰符
//long 8字节整数型
//native
//new 创建对象修饰符
//package 包.说明
//private 私有化修饰符 权限修饰符
//protected 权限修饰符
//public 权限修饰符
//return 返回语句定义
//strictfp
//short 2字节短整数型
//static 公开共享修饰符
//super 引用其父类变量的修饰符定义符,(好像是)
//switch 多项选择判断
//synchronized
//this 辅助区分引用变量修饰符 用来区分重名成员变量与局部变量 使用则定义为成员变量
//throw
//throws
//transient
//try
//void 通常为定义返回值类型修饰符,无需返回值;也可以说空数据?
//volatile
//while 先判断,再循环 判断循环首
注意点:
1.不能使用/*关键字*/作为变量名或方法名;
2.标识符是/*大小写敏感*/的
3.可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音,很Low;
3.数据类型讲解
java是一种强类型语言(强类型定义语言)
- 强类型定义语言:java c++
优点:安全性高
缺点:速度慢(比较其他语言)
- 要求变量的使用要严格规定,所有变量都必须先定义后才能使用
- 弱类型语言:VB JS
数据类型:
//基本类型(四类八种)
//整数型
//byte 1字节 正负128
//short 2字节 近4万
//int 4字节 正负21亿
//long 8字节 范围超21亿
//浮点数型
//float 4字节
//double 8字节 常用
//字符型
//char 2字节(byte)
//逻辑型
//boolean 1位(bit二进制)
//不在这四类八种里面的都是引用类型;
//1byte=8bit
//引用类型
//类
//接口
//数组
数据类型及拓展面试题
面试常见类型:各种进制在java中,是如何进行表示的;
整数拓展:
十六进制 十进制 八进制 二进制
以0x开头 直接写 以0开头 以0b开头
--
浮点数拓展:
由于浮点数类型能表现的范围是有限的,对于某些数据过大时,会产生舍入误差;
离散性,结果只能是大约数;无限接近于结果;
最好完全避免使用浮点数进行比较;
//float
//double
面试真题:对于银行业务,应该使用什么类型;
类:BigDecimal 数学工具类;
--
字符拓展:
//所有的字符本质还是数字;
编码: Unicode 2字节(0-65536=/U0000-/UFFFF);
//小写字母比大写字母多32; 97:a 65:A
//转义字符
\t 制表符 \n 换行符
--
引用类型相比较,用来比较的是地址
数据类型相比较,用来比较的是数据;
--
布尔值拓展:
less is more //代码要精简易读;
//true==ture 新手
//ture 老手
类型转换
低<--------------------------->高;
byte<short<int<long<float<double
//小数的优先级一定大于整数;
//运算中,不同类型的数据先转化为同一类型,然后进行计算;
//在java语言中,类型由小到大,存在自动类型转换
//但由大到小,需要程序员自己进行强制类型转换;
//强制类型转换格式: byte num =(byte) 10;
//数据类型默认为int型,所以需要使用强制类型转换进行由高到低的类型转换;
//数据默认类型:书写整数时,默认类型为int;
//书写浮点数时,默认类型为double;
//在转换类型时,需注意范围大小,否则会造成数据溢出问题,从而出现Bug;
注意点:
1.不能对boolean值进行转换;
2.不能把对象类型转换成不相干的类型;如字符串转换成数字;
3.将高容量的数据转换到低容量的类型时,需要进行强制转换;反之不用;
4.转换的时候可能存在内存溢出,或者精度问题;
5.操作比较大的数时,注意溢出问题;
//Jdk7新特性:数字之间可以使用下划线进行分割;1_0000_0000;
//使用数据类型计算时,创建的是什么类型,默认就将其使用相应类型计算;
//在对大型数据进行计算时,需要注意其创建类型,与其计算时所使用的变量类型;
//先把计算数据中一个数据提升,那么另一个数据也会被自动提升,再进行计算;
//在对类型定义时,对于需要在数值后面加字母标记的,一律使用大写字母,便于区分;
变量
java变量是程序中最基本的存储单元.其要素包括变量名,变量类型和作用域.
变量:在程序运行过程中,可以进行改变的数据;
//数据类型 变量名 = 值; 可以使用逗号进行分隔来声明多个同类型变量;
注意事项:
1.每个变量都有类型,类型可以是基本类型,也可以是引用类型;
2.变量名必须是合法的标识符;
3.变量声明是一条完整的语句,因此每一个声明都必须以分号进行结束;
4.不建议一行定义多个变量,不方便查看;影响程序可读性
常量:在程序运行过程中,不可被改变的数据;
1.初始化之后不能再被改变的数据;,不会变动的值;
2.所谓常量可以理解为一种特殊的变量,它的值被设定后,在程序运行期间不可改变;
//常量定义方法:
final 数据类型 常量名=值
final double PI=3.14159;
3.常量的标识符一般使用大写字母;
变量作用域
public class Variable{
static int allClicks=0; //类变量
String str = "hello,world"; //实例变量/成员变量
public void method(){
int i = 0; //局部变量
}
}
局部变量 方法里面
(存在于方法当中)
1.局部变量存在于方法块当中,由方法第一个大括号开始,至结束大括号,结束;
2.局部变量必须声明与初始化值;
//----------------------------------
实例变量 类中间,没有static修饰符
1.实例变量:从属于对象;
2.不需要进行初始化,也可以使用;
3.对于实例变量来说,如果没有初始化,那么将会得到一个默认值;
int型默认值:0;
boolean型默认值:false;
double型默认值:0.0;
4.除了基本类型,其余引用类型,默认初始值皆为nall;
5.如何使用实例变量:
类名称(变量类型-类) 对象名(自己命名)=new 类名称();
对象名.实例变量名=赋值;
//----------------------------------
1.类变量 类里面,使用static修饰符
1.如何使用类变量:
public class Demo01{
//类变量定义:
//static 数据类型 类名称;
static double salary=2500.0;
}
2.类变量:从属于类;随类创建,随类消失;
变量的命名规范
1.所有变量,方法,类名:/*见名知意*/;
2.类成员变量:首字母小写和驼峰原则(/*小驼峰模式*/):monthSalary
3.局部变量:首字母小写和驼峰原则(/*小驼峰模式*/);
4.常量:/*大写字母与下划线*/ :MAX_VALUE
5.类名:首字母大写和驼峰原则(/*大驼峰模式*/):Man,GoodMan
6.方法名:首字母小写和驼峰原则(/*小驼峰模式*/):run(),runRun();
运算符(operator)
算术运算符:+,-,*,/,%,++,--
赋值运算符:=
关系运算符:>,<,>=,<=,==,!=instanceof
逻辑运算符:&&,||,!
位运算符:&,|,^,~,>>,<<,>>>(了解!!!)
条件运算符: ?:
扩展赋值运算符: +=,-=,*=,/=;
1.多个数值类型操作,有一个为long类型,那么运算结果也为long;
2.没有long类型的情况,做数值运算,结果类型默认为int;
3.若有double类型,那么运算结果为double,(默认为高容量的类型存放)
/*--------------------------------------------*/
自增自减运算符
//++ -- 一元运算符
//a++ , a-- //在赋值后,先进行赋值操作,过后再进行自增自减操作;
//++a , --a //在赋值前,先进行自增自减操作,之后才进行赋值;
//幂运算: 2^3=2*2*2=Math.pow(2,3);
/*--------------------------------------------*/
逻辑运算符
//&& and 并且
//|| or 或者
//! 非(取反)
/*--------------------------------------------*/
位运算符
A = 0011 1100
B = 0000 1101
-------------
A&B 0000 1100
A|B 0011 1101
A^B 0011 0001 (两数相同则为0,不相同则为1);
~B 1111 0010 (将原数取反)
//& and 并且
//| or 或者
//^ 异或运算
//~ 非(取反)
面试题:2*8如果计算得快;
将其拆分称为2*2*2*2
//<< 左移(相当于将数值*2)
//>> 右移(相当于将数值/2)
2<<3=2*8;
1.位运算效率极高,因其直接在系统底层操作;
/*--------------------------------------------*/
条件运算符 -三元运算符//必须掌握,提高可读性;
// ?:
//条件表达式 ? true:false;
1.x ? z:y;
2.x>z ? z:y;
/*--------------------------------------------*/
扩展运算符
//+=
//-=
//*=
///=
int a = 10;
int b = 20:
a += b; = a= a+b;
a -= b; = a= a-b;
a *= b; = a= a*b;
a /= b; = a= a/b;
面试题:
""+a+b;
a+b+""; 两者输出结果有什么不同;
//1.字符串在运算数值前面的,会默认进行字符串拼接操作运算;
//2.字符串在运算数值后面的,前面的运算数值会先运算,之后在拼接;
//3.运算符默认由左到右运算,前方类型为何种,默认进行何种操作?
//面向百度编程1.
包机制
1.为了更好的组织类,java提供了包机制,用于区别类名的命名空间
2.包语句的语法格式为:
package cn.itcast.day01.Demo01;
package com.baidu.www;
3.一般利用公司域名倒置作为包名;
www.itcast.cn=cn.itcast.www
wwww.baidu.com=com.baidu.www
weiku.baidu.com=com.baidu.wenku
4.为了能够使用某一个包的成员,我们需要再java程序中明确导入该包.
4.1.使用"import"语句可以完成此功能;
import java.util.Date;
import java.util.lang;
import com.baidu.www;
//*星号通配符;将其包下所有类皆导入此类进行使用;
import com.baidu.www.*;
//尽量不能让包名称重复;
//面向百度编程2
javaDoc生成文档
1.javaDoc命令是用来生成自己API文档的;
2.参数信息:
@author 作者名
@version 版本号
@since 指明需要最早使用的jdk版本
@param 参数名
@return 返回值情况
@throws 异常抛出情况
代码示例:
/**
@author kuangshen//作者名称;
@version 1.0//自我开发程序1.0
@since 1.8//jdk使用版本1.8
*/
public class Doc{
String name;//类变量
/**
@param name //参数
@return //返回值情况
@throws Exception //异常抛出情况
*/
public String returnName(String name) throws Exception{
return name;
}
}
3.加在类上面,为类注释;
4.加在方法上面,为方法注释;
//javaDoc-cmd命令
//若遇到乱码问题,可以使用以下方法:
1.javadoc -encoding UTF-8 将其中文编码转换为UFT-8
2.-charset UTF-8 将字符也设置为UTF-8格式
代码示例: javadoc -encoding UTF-8 -charset UTF-8 XXX.java
//面向百度编程3
修饰符
1.修饰符,不存在先后顺序问题;
2.处于变量类型前面的都是修饰符;
main()方法
public static void main(String[] args){
//标准定义格式;
}
在其下方,可以添加其他方法;
在main()方法当中,还可以定义属性;
属性:
方法块
static {
//方法块
}
学以致用,活到老,学到老;
永远不要觉得太晚,只要开始了,就会有机会;

浙公网安备 33010602011771号