首页编程java编程java代码格式?java代码的基本格式

java代码格式?java代码的基本格式

编程之家2026-05-20879次浏览

各位老铁们,大家好,今天由我来为大家分享java代码格式,以及java代码的基本格式的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

java代码格式?java代码的基本格式

C++、C、或者java,这些语言写代码时应该要怎么规范格式,

C/C++源代码书写规范1.在.h/.cpp的开头应有一段格式统一的说明,内容包括:a.文件名(FileName);b.创建人(Creator);c.文件创建时间(Date);d.简短说明文件功能、用途(Comment)。例:////////////////////////////////////////////// FileName: GetVersion.h// Creator: Liu Haifeng// Date: 2002-10-28// Comment: Get file version information////////////////////////////////////////////2.对于主要功能函数应有注释说明。内容包括:功能、入口/出口参数,必要时还可有备注或补充说明,对于函数中的主要功能代码,也应有注释说明。注释以英文为主。例://////////////////////////////////////////////Remarks:// Check file whether exist////Parameters:// LPCTSTR lpszPathName: Input full path name////Return values:// int: Non-zero means success// Zero means failure////////////////////////////////////////////3.每列代码的长度推荐为80列,最长不得超过120列;折行以对齐为准。例:HANDLE KSOpenFile(const char cszFileName[],int nMode);或者:BOOL KSReadFile(HANDLE hFile,void*pvBuffer,int nReadSize,int*pnReadSize);4.循环、分支代码,判断条件与执行代码不得在同一行上。例:正确:if(n==-2)n= 1;elsen= 2;不得写做:if(n==-2) n= 1;else n= 2;5.指针的定义,*号既可以紧接类型,也可以在变量名之前。例:可写做:int* pnsize;也可写做:int*pnsize;但不得写做:int* pnsize;6.在类的成员函数内调用非成员函数时,在非成员函数名前必须加上"::"。例:::Sleep(2000);7.函数入口参数有缺省值时,应注释说明。例:BOOL KSSaveToFile(const char cszFileName[],BOOL bCanReplace/*= TRUE*/);或者:BOOL KSSaveToFile(const char cszFileName[],BOOL bCanReplace//= TRUE);8. else if必须写在一行。9.与‘{’、‘}’有关的各项规定:9.1‘{’、‘}’应独占一行。在该行内可有注释。例:正确:for(i= 0; i< cbLine; i++){//.....printf("Line%d:", i);printf("%s\n", pFileLines);}不得写做:for(i= 0; i< cb; i++){ printf("Line%d:", i);printf("%s\n", pFileLines);}9.2‘{’必须另起一行,‘{’之后的代码必须缩进一个Tab。‘{’与‘}’必须在同一列上。例:正确:if(i> 0){m= 1;n++;}不得写做:if(i> 0){m= 1;n++;}例外:if(i== 0){ ASSERT(FALSE); return;}9.3在循环、分支之后若只有一行代码,虽然可省略‘{’、‘}’,但不推荐这么做。若省略后可能引起歧义,则必须加上‘{’、‘}’。例:正确:if(n==-2)n= 1;elsen= 2;或者:if(n==-2){ n= 1;}else if(n!= nTemp){ n= 2;}else{ n= 3;}不得写做:if(n==-2)n= 1;else if(n!= nTemp)n= 2;elsen= 3;不推荐:if(i< 1){ n= 1;}else{if(i== 1){ n= 2;}else{if(i> 1){ n= 3;}}}10.与空格有关的各项规定。10.1在所有两目、三目运算符的两边都必须有空格。在单目运算符两端不必空格。但在‘->’、‘::’、‘.’、‘[’、‘]’等运算符前后,及‘&’(取地址)、‘*’(取值)等运算符之后不得有空格。例:正确:int n= 0, nTemp;for(int i= nMinLine; i<= nMaxLine; i++)不得写做:int n=0, nTemp;for( int i=nMinLine; i<=nMaxLine; i++)10.2 for、while、if等关键词之后应有1个空格,再接‘(’,之后无空格;在结尾的‘)’前不得有空格。例:正确:if(-2== n)不得写做:if(-2== n)或if(-2== n)等等。10.3调用函数、宏时,‘(’、‘)’前后不得有空格。例:正确:printf("%d\n", nIndex);不得写做:printf("%d\n", nIndex);printf("%d\n", nIndex);等等。10.4类型强制转换时,‘(’‘)’前后不得有空格例:可写做:(KSFile*)pFile;也可写做:(KSFile*)pFile不得写做:( KSFile*)pFile( KSFile*) pFile11.与缩进有关的各项规定11.1缩进以 Tab为单位。1个 Tab为 4个空格11.2下列情况,代码缩进一个 Tab:1.函数体相对函数名及'{'、'}'。例:int Power(int x){return(x* x);}2. if、else、for、while、do等之后的代码。3.一行之内写不下,折行之后的代码,应在合理的位置进行折行。若有+-*/等运算符,则运算符应在上一行末尾,而不应在下一行的行首。11.3下列情况,不必缩进:switch之后的 case、default。例:switch(nID){case ID_PLAY:......break;case ID_STOP:......break;default:......break;12.对于涉及到系统的功能调用,要求使用系统提供的宏,不得直接使用具体的数值。例: char szSystemPath[MAX_PATH]={0};正确char szSystemPath[260]={0};错误13.关于函数编写的规定13.1除了非常简单的函数或者没有必要,函数需要有返回值,并且推荐返回值的类型为int,成功时为 true,失败时为false。不推荐直接使用1和0来表示。13.2在函数内部变量定义全部放在函数的开始处,不能在代码中间出现变量定义。变量定义需要初始化值,一般是0、false、NULL等。13.3程序员自行编写的函数不推荐使用DWORD等指明字节长度的变量类型,推荐使用unsigned long等变量类型。对于ULONG等vc系统定义的变量类型,推荐使用unsigned long来代替。如果调用系统API,在MSDN中已经指明了是DWORD等类型,则可以使用。13.4推荐使用int nResult作为函数自身的返回值变量,int nRetCode、BOOL bRetCode作为调用其他函数的返回值变量。13.5推荐使用goto语句来统一函数出口,goto语句一般只能跳转到一个函数出口,最多只能有两个,出口标识必须命名为Exit0和Exit1。在出口处必须显式检查曾经申请过的系统资源(如内存),并且进行释放。13.6如果编写DLL,除非特殊情况,导出函数的调用类型必须是__stdcall,便于多模块协同工作。附录:1.函数编写示范///////////////////////////////////////////////////////////////////////// Remarks:// Get file version information//// Parameters:// [in] const char cszPathName: Input file path name// [out] PVERSION_INFO*pVersionInfo: File version information//// Return values:// int: Non-zero means success, zero means failure///////////////////////////////////////////////////////////////////////int GetFileVersion(const char cszPathName, PVERSION_INFO*pVersionInfo){int nResult= false;int nRetCode= false;char szSystemPath[MAX_PATH]={0};nRetCode= IsFileExist(cszPathname);if(!nRetCode)goto Exit0;//Others code herenResult= true;Exit0:return nResult;}以前你的习惯可能是我定义一个函数,通过传递参数去实现这个函数的功能。面向对象编程要体现三个特点“封装、继承、多态”;比如你写一个飞这个函数,你需要在这里传递参数飞机。换个角度,你定义一个类是飞机,那这个飞机在封装的过程就有飞。降落等这功能(函数)。你想要用飞这个功能(函数)的时候,你只需调用飞机这个类“飞”这个成员函数。

java 代码怎么写

package com.date;

public class DateDome{

private int year=0;//年

private int month=0;//月

private int day=0;//日

java代码格式?java代码的基本格式

public DateDome(int year,int month,int day){

this.year=year;

this.month=month;

this.day=day;

}

public DateDome(){

java代码格式?java代码的基本格式

}

//年大于等于0

public boolean isYear(){

boolean suc=false;

if(year<0)return suc;

else if(year>=0)suc=true;

return suc;

}

//判断月数1-12月

public boolean isMonth(){

boolean suc=false;

if(month<0||month>12)return false;

else suc=true;

return suc;

}

//判断天数1-31号

public boolean isDay(){

boolean suc=false;

if(day<=0||day>31)return suc;

else suc=true;

return suc;

}

//是否为闰年

public boolean isRunNian(int year){

boolean suc=false;

if(year>=0){

if(year%400==0||(year%4==0&&year%100!=0)){

suc=true;

}

}

return suc;

}

//判断合法年月日

public boolean isInvaildate(int year,int month, int day){

boolean suc=false;

if(isYear()&&isMonth()&&isDay()){

switch(month){

case 1:

suc=true;

break;

case 2:

if(isRunNian(year)&&day<=29){

suc=true;

}else if(day<=28){

suc=true;

}

break;

case 3:

suc=true;

break;

case 4:

if(day<=30)suc=true;

break;

case 5:

suc=true;

break;

case 6:

if(day<=30)suc=true;

break;

case 7:

suc=true;

break;

case 8:

suc=true;

break;

case 9:

if(day<=30)suc=true;

break;

case 10:

suc=true;

break;

case 11:

if(day<=30)suc=true;

break;

case 12:

suc=true;

break;

}

}

return suc;

}

//根据日期得到天数

public int getDaysByDate(int year,int month,int day){

int days=0;

if(isInvaildate(year,month,day)){

for(int i=0;i<year;i++){

if(isRunNian(i)){

days+=366;

}else{

days+=365;

}

}

for(int i=1;i<month;i++){

if(i==1||i==3||i==5||i==7||i==8||i==10||i==12){

days+=31;

}else if(i==4||i==6||i==9||i==11){

days+=30;

}else if(i==2){

if(isRunNian(year)){

days+=29;

}else{

days+=28;

}

}

}

days+=day-1;

return days;

}else{

System.out.println("处理有非法日期!!!");

return-1;

}

}

//根据天数得到日期数int[]由,年、月、日组成的数组

public int[] getDateByDays(int days){

int das=0;//预计的天数

int y=0,m=1,d=1;//0年1月1号

int[] date=new int[3];

boolean suc=true;

int temp=0;

if(days<0){

System.out.println("请输入合法天数!!!");

return new int[]{0,0,0};

}

while(suc){

if(isRunNian(y)){

temp=366;

}else{

temp=365;

}

das+=temp;

if(das<days){

y++;

}else{

das-=temp;

break;

}

}

while(suc){

if(m==1||m==3||m==5||m==7||m==8||m==10||m==12){

temp=31;

}else if(m==4||m==6||m==9||m==11){

temp=30;

}else if(m==2){

if(isRunNian(y)){

temp=29;

}else{

temp=28;

}

}

das+=temp;

if(das<days){

m++;

}else{

das-=temp;

break;

}

}

d=days-das+1;

date[0]=y;

date[1]=m;

date[2]=d;

return date;

}

//得到多少天前或后合法日期

public int[] addORsubDay(int dd){

int days=getDaysByDate(year,month,day);

if(days>=0){

days+=dd;

if(days>0){

return getDateByDays(days);

}else{

System.out.println("处理日期不能小于0年1月1号");

return new int[]{0,0,0};//代表无效日期

}

}else{

System.out.println("处理日期不能小于0年1月1号");

return new int[]{0,0,0};//年,月,日

}

}

//得到两个日期相距天数

public int TwoDate(int[] date1,int[] date2){

int d=-1;

if(isInvaildate(date1[0],date1[1],date1[2])&&isInvaildate(date2[0],date2[1],date2[2])){

int days1=getDaysByDate(date1[0],date1[1],date1[2]);

int days2=getDaysByDate(date2[0],date2[1],date2[2]);

d=days1-days2;

return d>=0?d:-d;

}else

{

System.out.println("处理有非法日期!!!");

return d;

}

}

}

我写了你提出的功能,你还可以扩展其它功能。

怎么读取java文件中字符编码格式

1:简单判断是UTF-8或不是UTF-8,因为一般除了UTF-8之外就是GBK,所以就设置默认为GBK。

按照给定的字符集存储文件时,在文件的最开头的三个字节中就有可能存储着编码信息,所以,基本的原理就是只要读出文件前三个字节,判定这些字节的值,就可以得知其编码的格式。其实,如果项目运行的平台就是中文操作系统,如果这些文本文件在项目内产生,即开发人员可以控制文本的编码格式,只要判定两种常见的编码就可以了:GBK和UTF-8。由于中文Windows默认的编码是GBK,所以一般只要判定UTF-8编码格式。

对于UTF-8编码格式的文本文件,其前3个字节的值就是-17、-69、-65,所以,判定是否是UTF-8编码格式的代码片段如下:

File file= new File(path);

InputStream in= new java.io.FileInputStream(file);

byte[] b= new byte[3];

in.read(b);

in.close();

if(b[0]==-17&& b[1]==-69&& b[2]==-65)

System.out.println(file.getName()+":编码为UTF-8");

else

System.out.println(file.getName()+":可能是GBK,也可能是其他编码");

2:若想实现更复杂的文件编码检测,可以使用一个开源项目cpdetector,它所在的网址是:。它的类库很小,只有500K左右,cpDetector是基于统计学原理的,不保证完全正确,利用该类库判定文本文件的代码如下:

读外部文件(先利用cpdetector检测文件的编码格式,然后用检测到的编码方式去读文件):

/**

*利用第三方开源包cpdetector获取文件编码格式

*

*@param path

*要判断文件编码格式的源文件的路径

*@author huanglei

*@version 2012-7-12 14:05

*/

public static String getFileEncode(String path){

/*

* detector是探测器,它把探测任务交给具体的探测实现类的实例完成。

* cpDetector内置了一些常用的探测实现类,这些探测实现类的实例可以通过add方法加进来,如ParsingDetector、

* JChardetFacade、ASCIIDetector、UnicodeDetector。

* detector按照“谁最先返回非空的探测结果,就以该结果为准”的原则返回探测到的

*字符集编码。使用需要用到三个第三方JAR包:antlr.jar、chardet.jar和cpdetector.jar

* cpDetector是基于统计学原理的,不保证完全正确。

*/

CodepageDetectorProxy detector= CodepageDetectorProxy.getInstance();

/*

* ParsingDetector可用于检查HTML、XML等文件或字符流的编码,构造方法中的参数用于

*指示是否显示探测过程的详细信息,为false不显示。

*/

detector.add(new ParsingDetector(false));

/*

* JChardetFacade封装了由Mozilla组织提供的JChardet,它可以完成大多数文件的编码

*测定。所以,一般有了这个探测器就可满足大多数项目的要求,如果你还不放心,可以

*再多加几个探测器,比如下面的ASCIIDetector、UnicodeDetector等。

*/

detector.add(JChardetFacade.getInstance());//用到antlr.jar、chardet.jar

// ASCIIDetector用于ASCII编码测定

detector.add(ASCIIDetector.getInstance());

// UnicodeDetector用于Unicode家族编码的测定

detector.add(UnicodeDetector.getInstance());

java.nio.charset.Charset charset= null;

File f= new File(path);

try{

charset= detector.detectCodepage(f.toURI().toURL());

} catch(Exception ex){

ex.printStackTrace();

}

if(charset!= null)

return charset.name();

else

return null;

}

String charsetName= getFileEncode(configFilePath);

System.out.println(charsetName);

inputStream= new FileInputStream(configFile);

BufferedReader in= new BufferedReader(new InputStreamReader(inputStream, charsetName));

读jar包内部资源文件(先利用cpdetector检测jar内部的资源文件的编码格式,然后以检测到的编码方式去读文件):

/**

*利用第三方开源包cpdetector获取URL对应的文件编码

*

*@param path

*要判断文件编码格式的源文件的URL

*@author huanglei

*@version 2012-7-12 14:05

*/

public static String getFileEncode(URL url){

/*

* detector是探测器,它把探测任务交给具体的探测实现类的实例完成。

* cpDetector内置了一些常用的探测实现类,这些探测实现类的实例可以通过add方法加进来,如ParsingDetector、

* JChardetFacade、ASCIIDetector、UnicodeDetector。

* detector按照“谁最先返回非空的探测结果,就以该结果为准”的原则返回探测到的

*字符集编码。使用需要用到三个第三方JAR包:antlr.jar、chardet.jar和cpdetector.jar

* cpDetector是基于统计学原理的,不保证完全正确。

*/

CodepageDetectorProxy detector= CodepageDetectorProxy.getInstance();

/*

* ParsingDetector可用于检查HTML、XML等文件或字符流的编码,构造方法中的参数用于

*指示是否显示探测过程的详细信息,为false不显示。

*/

detector.add(new ParsingDetector(false));

/*

* JChardetFacade封装了由Mozilla组织提供的JChardet,它可以完成大多数文件的编码

*测定。所以,一般有了这个探测器就可满足大多数项目的要求,如果你还不放心,可以

*再多加几个探测器,比如下面的ASCIIDetector、UnicodeDetector等。

*/

detector.add(JChardetFacade.getInstance());//用到antlr.jar、chardet.jar

// ASCIIDetector用于ASCII编码测定

detector.add(ASCIIDetector.getInstance());

// UnicodeDetector用于Unicode家族编码的测定

detector.add(UnicodeDetector.getInstance());

java.nio.charset.Charset charset= null;

try{

charset= detector.detectCodepage(url);

} catch(Exception ex){

ex.printStackTrace();

}

if(charset!= null)

return charset.name();

else

return null;

}

URL url= CreateStationTreeModel.class.getResource("/resource/"+"配置文件");

URLConnection urlConnection= url.openConnection();

inputStream=urlConnection.getInputStream();

String charsetName= getFileEncode(url);

System.out.println(charsetName);

BufferedReader in= new BufferedReader(new InputStreamReader(inputStream, charsetName));

3:探测任意输入的文本流的编码,方法是调用其重载形式:

charset=detector.detectCodepage(待测的文本输入流,测量该流所需的读入字节数);

上面的字节数由程序员指定,字节数越多,判定越准确,当然时间也花得越长。要注意,字节数的指定不能超过文本流的最大长度。

4:判定文件编码的具体应用举例:

属性文件(.properties)是Java程序中的常用文本存储方式,象STRUTS框架就是利用属性文件存储程序中的字符串资源。它的内容如下所示:

#注释语句

属性名=属性值

读入属性文件的一般方法是:

FileInputStream ios=new FileInputStream(“属性文件名”);

Properties prop=new Properties();

prop.load(ios);

String value=prop.getProperty(“属性名”);

ios.close();

利用java.io.Properties的load方法读入属性文件虽然方便,但如果属性文件中有中文,在读入之后就会发现出现乱码现象。发生这个原因是load方法使用字节流读入文本,在读入后需要将字节流编码成为字符串,而它使用的编码是“iso-8859-1”,这个字符集是ASCII码字符集,不支持中文编码,

方法一:使用显式的转码:

String value=prop.getProperty(“属性名”);

String encValue=new String(value.getBytes(“iso-8859-1″),”属性文件的实际编码”);

方法二:象这种属性文件是项目内部的,我们可以控制属性文件的编码格式,比如约定采用Windows内定的GBK,就直接利用”gbk”来转码,如果约定采用UTF-8,就使用”UTF-8″直接转码。

方法三:如果想灵活一些,做到自动探测编码,就可利用上面介绍的方法测定属性文件的编码,从而方便开发人员的工作

补充:可以用下面代码获得Java支持编码集合:

Charset.availableCharsets().keySet();

可以用下面的代码获得系统默认编码:

Charset.defaultCharset();

java代码格式的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java代码的基本格式、java代码格式的信息别忘了在本站进行查找哦。

编程语言软件,中文编程软件给看下面的ai聊天软件,可以聊天ai的软件有哪些