public class hello { //文件名和类名必须保证一致 hello为类名
public static void main(String[] args) { //main为方法 主方法 和c的主函数类似
System.out.println("Hello,world");
}
代码如上
标识符
jave的类名 变量名 以及方法名都被称为标识符
所有的标识符都是字母 美元符,或下划线开头
** 不能有关键字作为变量名或方法名 **
jaiva 严格区分大小写
常见错误
int 2ab=2;//不能以数字开头
int #rda=2;//不能以特殊字符开头
int -dad=2;//不能以一般运算符开头
)
注意string 不是关键字
不建议以拼音或者中文命名
java 支持中文命名
如 string 天才="是我“;但不建议这样做
java 注释
单行注释和多行注释和c/c++一样
java数据类型(基本类型)
java 为强类型语言
所有的变量必须先定义后才呢个使用
优缺点:安全但是运行的速度较慢
注意:Java变量必须定义而且赋值后才能输出
(c/c++中只定义不赋值 根据定义再堆或者栈 会输出0或者随机只)
分类
.基本类型
1.数值型
- 整数型
1,byte型 占一个字节 c/c++无该类型
2,short型 占2个字节
3,int型 占4个字节
4,long型 占4个字节 - 浮点型
1,float型 占4个字节
2,double型 占8个字节 - 字符型
char型 占2个字节 c/c++中为一个字节
2.boolean 型 占2个字节 其值 为true 或false c/c++中为bool型 占一个字节
.引用类型
- 类
- 接口
- 数组
:
//八大数据类型
//整数
int num1=20;//最常用
byte num2=30;//注意范围为-127-128
short num3=54;
long num4=44L;//long类型数值要在后面加L以区分
//浮点型
float num5=2.23F;//float类型要在后面加F以区分
double num6=2.345643;
//字符型
char a='加'//''才表示字符 而“”表示字符串
//string不是关键字 是一个类
//string a="天下“
//布尔值 表是非
boolean flag=true;
boolean af=false;
//八大数据类型
//整数
int num1=20;//最常用
byte num2=30;//注意范围为-127-128
short num3=54;
long num4=44L;//long类型数值要在后面加L以区分
//浮点型
float num5=2.23F;//float类型要在后面加F以区分
double num6=2.345643;
//字符型
char a='加'//''才表示字符 而“”表示字符串
//string不是关键字 是一个类
//string a="天下“
//布尔值 表是非
boolean flag=true;
boolean af=false;
!:
[图片]
里插入代码片
-
位
计算机内部数据最小储存单位 10011010是一个8位2进制数据 用b表示 -
字节
是计算机中数据处理的基本单位 用B表示
1B=8b; -
字符
是计算机中使用的字母 数字字和符号
1byte表示一位
1Byte 表示一个字节
1Byte=8byte(1B=8b)
1024B=1kB;
1024kB=1M
1024M=1G
1024G=1TB
//表明可以输入2进制8进制16进制的数
//整数扩展: 二进制0b 八进制0 十进制 十六进制0x
int i = 10;
int i2 = 010; //八进制 8
int i3 = 0x10; //十六进制 16
1
2
3
4
//浮点数扩展:
//面试题:银行业务字母怎么表示钱? BigDecimal(数学工具类)
//float double是有问题的,**最好避免使用浮点数进行比较**
float f = 0.1f; //0.1
double d = 1.0/10; //0.1
System.out.println(f==d); //false
//浮点数 位有限,舍入误差,大约
//最好避免使用浮点数进行比较
float f1 = 23131313131f;
float f2 = f1+1;
System.out.println(f1==f2); //true
1//避免浮点数之间的比较
2
3
4
5
6
7
8
9
10
11
//字符扩展:所有字符本质还是数字
char c1 = 'a';
char c2 = '中';
System.out.println(c1); //a
System.out.println((int)c1);/制类型转换,97
System.out.println(c2); //中
System.out.println((int)c2);/制类型转换,20013
//编码 Unicode表(97=a,65=A)2字节 0-65536
//U000~UFFFF 十六进制(u0061=a,相当于十进制的97)
System.out.println('\u0061'); //a '\'是转义字符
1
2//字符在一定范围和int可以互用
unicode 编码
3
4
5
6
7
8
9
10
11
12
//布尔值扩展
boolean flag = true;
if(flag==true){} //新手
if(flag){} //老手这样写 Less is More(代
//c/c++ 是bool
—— ——————————————
类型转换
char ,short,byte->int->long->float->double
低类型向高类型自动转化
高类型向低类型转换需要强制转换(用强制转换符**)必须**
public class dfdsfd {
public static void main( String[] args) {
int i=128;
byte a=(byte)i;//由地类型高高类型的转化不加强制转换符会报错 byte占1个字节 -128-127;
System.out.println(a);//超出数据类型的范围会溢出
}
}
通过实验可以得出JAVA里的类型转化和C/c++种基本一致
可以看成下图
总结为横向是必须转的
纵向看2个数的数据类型由低到高转到数据类型相同为止
当然c/c++由高转低大多是不需要用强制转换的
对于float 和double 转为int 型的时候会取整
和c一致
public class dfdsfd {
public static void main( String[] args) {
System.out.println((int)3.4);
System.out.println((int)3.5f);
}
}
输出都是3
char 和Int型的转化
public class dfdsfd {
public static void main( String[] args) {
char a='a';
int b=a+1;
System.out.println(b);
}
}
输出a==98
而字符转为int 需要强制转化
public class dfdsfd {
public static void main( String[] args) {
char a='a';
// int a=98;
char c=(char)a;
System.out.println(c);
}
输出a
}
一般浮点数之间,浮点数和整数之家的运算可能会存在数据缺失问题
而不同整数间的转化运输 一般不会数据缺失
本质原因:浮点数在计算机内的储存转化的二进制可能会无限循环
jdk7新特性 下划线分割 不会被都进去
public class dfdsfd {
public static void main( String[] args) {
//jdk7 特性 下划线分割
int a=100_123_1;
System.out.println(a);
}
}
变量,常量,作用域
java中允许变量定义但不赋值 但不允许不赋值的变量输出
但c./c++中允许这样的变量输出 根据定义在栈或者在堆 输出为0 或随机数
public class dfdsfd {
public static void main( String[] args) {
int a=3,b=6,c=9;//不推荐
int a=3;
int b=6;//推荐这样赋值
int c=9;
}
}
变量的作用域
3种变量的定义`
**在这里插入代码片**
public class dfdsfd {
//实例变量,类的里面 方法的外面 从属与对象 可以不初始化 不初始化则返回这个类型的默认值
//String型默认为null 数值类型默认值都为0或0.0
//boolean型默认是false 除了基本类型其他默认都是null
String c;
int age;
public static void main( String[] args) {//main方法
//局部变量的位置
int a=1;
System.out.println(a);
//该变量只能在该方法使用
}
}
实例变量的输出
类变量
public class dfdsfd {
static String a;//返回null String 的s旭大写
static int b;//和实例变量一样 可赋值可不复制 不赋值则返回默认数值
static boolean c;//但相比可以直接输出
//
public static void main( String[] args) {//main方法
System.out.println(a);
System.out.println(b);
System.out.println(c);
默认输出
null
0
false
}
}
常量的设置
定义的形式
static final 常量类型 常量名 =数值
public class dfdsfd {
//static是修饰符 放前方后都系可以
//但3.不行
1. final static int L=4;
2,static final int l=4;
3.final int L static =4;
public static void main( String[] args) {//main方法
System.out.println(L);
}
}
基本运算符
关于关系运算符的返回值
c++中的返回值
java中的返回值
得出结论:java中 boolea中的数值为true 和false 不是0和1
自增自减运算符
和在cc++中的运算机制完全一致
幂运算
和c中几乎一样 调用函数
可能函数的形式不太一样
但思想一致
![
逻辑运算符
在这里插入图片描述](https://img-blog.csdnimg.cn/ccf23d98996b4f978b8380062121c618.png)
public class aaa{
public static void main(String[] args)
{
boolean a=false ;
boolean b=true;
System.out.println("a||b="+(a||b));//引号里面输出字符 外面输出 变量 2这旭用+链接
System.out.println("a&&b="+(a&&b));
}
}
关于位运算详见笔记
public class aaa{
public static void main(String[] args)
{
a+=b;//a=a+b;
a-=b;//a=a-b;
a*=b;//a=a*b;
依次类推
}
}
输出时的字符串连接符+
条件运算符 ?:
x? y:z
如果x这个语句为true 则该条件语句返回x 反之返回y
包机制
不要让包里面的名字重复
阅读阿里巴巴开发手册
JAVA Dos(该小结转在自[
参数信息
@author 作者名
@version 版本号
@since 指明最早用的jdk版本
@param 参数名
@return 返回值情况
@throws 异常抛出情况
API文档:https://docs.oracle.com/javase/8/docs/api/
/**
-
@author Kuangshen
-
@version 1.0
-
@since 1.8
*/
public class Demo05 {
String name;/**
- @author kuangshen
- @param name
- @return
- @throws Exception
*/
public String test(String name) throws Exception{
return name;
}
/**
* @author Kuangshen
* @version 1.0
* @since 1.8
*/
public class Demo05 {
String name;
/**
* @author kuangshen
* @param name
* @return
* @throws Exception
*/
public String test(String name) throws Exception{
return name;
}
}
————————————————
打开某个类所在文件夹下的cmd命令行
输入:javadoc -encoding UTF-8 -charset UTF-8 Doc(类名).java
会自动生成该类有关的API文档,查看文件夹发现多了一些文件
打开 index.html(首页)查看文档注释