第一个程序Hello world!
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
注意:
1-Java对大小写敏感
2-关键字class的意思是类。Java是面向对象的语言,所有的代码必须位于类里面
3-源文件编译后,得到相应的字节码文件,编译器为每个类生成独立的字节码文件
4-main文件是Java应用程序的入口方法,格式固定:
pubic static void main(String[] args){…}
5-一个源文件可以包含多个类
6-每个语言必须以分号结束,回车不是语句结束标志,所以一个语句可以跨多行
驼峰命名法
1-标识符是用来给变量,类,方法以及包进行命名的:
–必须以字母,下划线,美元符号开头
–其他部分可以十字母,下划线“_”,美元$和数字的任意组合
–大小写敏感,且长度无限制
–不可以是Java的关键字
–表示类名的每个单词首字母大写(规范)
–表示方法和变量的标识符:首字母小写,第二个单词开始首字母大写(规范)
2–Java不采用ASCII字符集,采用的是Unicode的字符集,因此Java的字母不仅仅是英文还可以是中文,但一般不建议使用中文
3-关键字是Java语言保留供内部使用的,我们不能使用关键字作为变量名和方法名
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello world!");
String name="初学者";
String first_name="初学者";
String _name="初学者";
String firstName="初学者";
}
protected void testName(){
}
}
注释
单行注释
快捷键:选中区域+alt+/
多行注释
快捷键:选中区域+Ctrl+shift+/
/*
* 多行注释
*
*/
文档注释
用在类、方法和变量上面,用来描述其作用
快捷键:alt+shift+j
/**
*
* 文档注释
*/
包名
包的作用是将功能相同或者相关的类和接口进行统一的存放,便于管理,方便维护和调用。一般是以小写字母进行命名,用.划分层次。开发中的顶级域名是以com,net,org,edu,cn这些开头后面接着公司/组织/个人名字/功能模块
package com.liushan.datasource.common;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
一般 类名
类一般用名词进行命名,首字母大写,最好见名知意,两个以上单词构成要用驼峰命名法。
public class RedisTemplateConfiguration{}
接口
接口和类差不多,但是接口命名时通常采用名词+形容词或动词来描述接口的动作行为。
public interface AfterAdvice{}
抽象类
抽象类其命名与普通类的命名规范相同。但是为了区别抽象类与普通类和接口,在命名抽象类时,会以“Abstract”/“Base”作为类名的前缀。
public abstract class AbstractAspectJAdvice{}
异常类命名
异常类一般以Exception作为后缀
public class NoSuchMethodError{}
方法
获取就用get开头,查询用find/query,连接查询条件的就用By/With进行连接,设置,插入,修改,删除用set,insert,update,delete,获取长度和数量就用length,size,类型转换用to。
public String getName(){}
public List<User> findAll(){}
public User findById(){}
public void setName(){}
public long length(){}
public String toString(){}
变量
1-变量的本质代表的是一个“可操作的储存空间”,空间位置是确定的,里面放置的是什么值是不确定的。
2-可通过操作变量名来访问“对应的存储空间”,从而操作这个“存储空间”储存的值。
3-Java是一种强类型的语言,每个变量都必须声明器数据类型。变量的数据类型决定了变量占据储存空间的大小。
4-变量的三大类型:局部变量,成员变量(实例变量,属于对象),静态变量(属于类)
常量
Java语言中用关键字final来定义一个常量,使用大写字母夹。常量一旦初始化后就不能再更改。
public static final String USER_NAME="葵阳";
枚举
枚举是特别的类,一般类名用首字母大写+驼峰命名的方法,枚举类中定义的名称要用大写
public enum Color{
RED,YELLOW,GREEN,WHITE;
}
数组
使用阿里的规范模板
int[] array = new int[10];
int[] idArray ={1,2,3,4,5};
String[] nameArray = {"First","Yellow","Big"}
public List<String> getNameById(Integer[] ids){
}
public List<String> getNameById(Integer...ids){
}
泛型类
E表示Element,通常用在集合中
ID用于表示对象的唯一标识符类型
T表示Type(类型),通常指代类
K表示Key(键),通常用于Map中
V表示Value(值),通常用于Map中,与K结对出现
N表示Number,通常用于表示数值类型
?表示不确定的Java类型
X用于表示异常
U,S表示任意的类型
public class HashSet<E> extends AbstractSet<E>{
}
public class HashMap<K,V> extends AbstractMap<K,V>{
}
public class ThreadLocal<T>{
}
public interface Functor<T,X extends Throwable>{
T val() throws X;
}
public class Container<K,V>{
private K key;
private V value;
Container(K key,V value){
this.key = key;
this.value = value;
}
}
public interface BaseRepository<T,ID>{
T findById(ID id);
void update(T t);
List<T> findByIds(ID...ids);
}
public static <T> List<T> methodName(Class<T> clz){
List<T> dataList = getByClz(clz);
return dataList;
}
接口实现类
接口实现类使用Impl作为后缀
public class AbroadServiceImpl extends ServiceImpl<AbroadMapper, Abroad> implements AbroadService{}
测试类和测试方法
测试类采用被测试业务模块名/被测试接口/被测试类+“Test”的方法进行书写,测试类中的测试函数采用“test”+用例操作_状态的组合方式进行书写
class DatasourceApplicationTest {}
复数和集合
一个变量表示多个数据时,用单词的复数形式进行书写
数据为Map的时候就用map为后缀
List<User> users;
Map<Integer,User> userMap;